问题标签 [msmq-wcf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4564 浏览

wcf - 使用 Windows 服务通过 WCF 处理 MSMQ 消息

我们有一个解决方案,我们使用 Windows 服务来挑选消息。

Windows 服务每 2 分钟触发一次,并检索 MSMQ 消息以将其传递给 Web 服务。

  1. 我可以创建一个 WCF 服务,它会自动从 MSMQ 队列中提取消息吗?
  2. 如果 WCF 服务支持自动调用,我可以避免使用 Windows 服务吗?
0 投票
3 回答
9101 浏览

wcf - WCF MSMQ 与 IIS 服务绑定 - 如何实例化服务?

我有一个带有 netMsmqBinding 的 WCF 服务。我的客户端可以将消息发送到我的队列,并且当服务运行时,它会按预期从队列中检索消息。如果服务未运行,则接收到的消息将排队等待服务启动。

我的问题是当消息进入队列时服务没有启动。该服务托管在 IIS 中,因此在 IIS 收到请求之前不会对其进行实例化。如果我浏览到该服务,那么它会处理队列中的消息,但显然这不是我想要的处理队列的方法!

我希望我需要更改服务实现,或更改 IIS 设置,但我不知道在哪里更改或更改什么。

更新

有人真的在 WCF 上使用 MSMQ 吗?我让这个工作了很短的时间 - 我在同一台服务器上的不同网站上启用了绑定,奇怪的是 - 但现在它又以某种方式停止工作了。

我遇到的唯一问题是当队列中有消息时服务的激活。目前,队列仅在服务实例化时处理,例如当我浏览 .svc 文件时。我在应用程序上启用了 net.msmq 协议,并且在站点上启用了 net.msmq 绑定......我还需要做什么吗?

0 投票
1 回答
153 浏览

wcf - 如何为 MSMQ3.0 创建 WCF 死信服务

我正在尝试创建一个从事务系统死信队列中读取死信的服务。

服务配置如下所示:

我的服务接口:

通过我的服务实现:

并像这样启动主机:

到目前为止,一切看起来都像许多书籍和教程中描述的那样,但是当我在事务性死信队列中生成死信时,服务不会被调用。我的服务出了什么问题?

感谢帮助恩拉

0 投票
1 回答
534 浏览

wcf - 为 net.msmq 端点实现合同的 WCF 服务对象是否也可以为 net.tcp 端点实现回调合同?

尝试实现 MSMQ 支持的 WCF PubSub。我知道 net.msmq 是单向的;但是,当我使用单个服务对象来实现 net.msmq 端点以从底层队列中读取,并使用 net.tcp 端点供侦听器订阅回调时,我遇到了很多关于单向 vs 的抱怨.双向,DuplexChannelFactory,DuplexClientBase,等等等等。

似乎实现这一点的唯一方法是让 net.msmq 队列读取服务成为 net.tcp 发布者服务的客户端,并在从队列中读取新消息时通知发布者,而不是发布消息内部订阅者。或者,不要在接收器上使用 net.msmq,而只是准备好一个普通的旧 MessageQueue 对象。

0 投票
1 回答
1312 浏览

active-directory - MSMQ 需要 AD 证书,但我们使用的是服务帐户

问题: 您如何创建 AD 帐户 MSMQ 需要的 AD 证书,这些证书是在第一次登录时在 AD 中的每台计算机上自动创建的,而无需实际以所述帐户登录?

背景:

我们正在为一个项目使用 WCF + MSMQ。“MSMQ客户端”实际上是一个零交互的windows服务,处理数据并发送到队列中。在我们的生产(以及测试/等)环境中,此 Windows 服务作为服务帐户运行。

  • 此服务帐户在 AD 中
  • 此服务帐户无权以交互方式登录,并且永远不会获得该权限
  • 根据wcf msmq 服务激活失败将安全设置为“关闭”不是一种选择,因为这是一个安全的环境
0 投票
1 回答
1060 浏览

msmq - MSMQ - 如何在两个应用程序之间进行通信

我最近开始研究 MSMQ,所以我有基本的疑问。如果两个应用程序需要通信,比如说服务器和客户端,我认为两者都将共享相同的 MQ 地址,当客户端更新时,服务器将拥有 MSMQ 观察程序,它会监听消息并使用它。所以根据我的说法,我们需要三个组件

客户端 - 知道队列位置

队列观察者 - 观察队列

服务——队列观察者将消息发送到哪个

0 投票
2 回答
2123 浏览

wcf - 负载平衡环境中 WCF 服务之间的 MSMQ

我正在考虑在基于一堆 WCF 服务的产品中添加队列功能。我已经阅读了一些关于 MSMQ 的内容,首先我认为这是我需要的,但我不确定并且正在考虑将队列放入数据库表中。我想知道这里的某个人是否得到了一些关于走哪条路的反馈。

基本上我打算有一个通过http调用的外观WCF服务。外观服务应该只将所有传入消息写入队列,以便对调用系统做出快速响应。然后,队列中的消息应由另一个组件处理,WCF 服务或 Windows 服务取决于我对队列的选择。

该产品在具有 2 到 n 个 Web 服务器的负载平衡环境中运行。

我正在考虑的选项和我得到的问题是:

  1. 让外观 WCF 写入 MSMQ,然后让另一个 WCF 服务从这个队列中读取来处理消息。从我所读到的内容中,我对这种替代方案没有信心的是,它将如何在负载平衡的环境中工作。

1A。MSMQ 应该放在哪里?每个网络服务器上一个?一个在单独的服务器上?多个在单独的服务器上?(不考虑冗余的需要,并且在极少数情况下数据可能会丢失并重新发送)

1B。如果我希望系统冗余,设计会如何影响?我希望能够在不丢失该队列中的数据的情况下丢失持有 MSMQ 的服务器(它永远不会再次联机)。从我所读到的有关 MSMQ 的信息中,我只能选择将 MSMQ 放在 Windows 集群上。那是对的吗?(我想避免为此使用 Windows 集群)。

  1. 第二种设计方案是让外观 WCF 服务将队列写入数据库。然后有两个或多个 Windows 服务来做队列的处理。我对这个替代方案没有任何疑问。如果您想知道为什么我不选择这个,因为它对我来说似乎更简单,那是因为我想构建它而不向解决方案引入任何 Windows 服务,我相信 MSMQ 具有我不想的功能自己编写代码,我也对使用 MSMQ 感到好奇,因为我以前从未使用过它。

最好的问候哈坎

0 投票
1 回答
1057 浏览

wcf - 通过 MSMQ 将日志缓冲到 WCF Web 服务

我手上有一个有趣的情况。几年来,我们已经有一个 WCF 服务,它在我们用于记录的网络上的 IIS 机器上运行。应用程序使用 basicHttpBinding 发送日志消息并将它们记录到数据库中。来自所有其他应用程序的大多数日志记录仅限于每个操作几十个日志。最近我们移植了另一个应用程序来使用这个日志服务。对于我们的日志服务,此应用程序的日志记录比任何其他客户端都更积极。它有一个操作,在其过程中可以记录超过 100,000 条消息(这是用于通过 CSV 文件导入 100,000 条记录)。

在试图找到一种更有效地运行它的方法时,建议我尝试使用 MSMQ 将日志请求排队并将它们转发到服务,而不是让应用程序直接与日志记录服务通信(请求用于性能目的的单独线程)。这样,在写入日志时应用程序不会被阻塞。我已经在我的本地机器上实现了这个 MSMQ 解决方案的概念证明,但由于我以前从未使用过 MSMQ,而且我现在才知道它在技术上的位置,我发现自己有很多问题和很少的答案. 我希望有人能指出一些关于 MSMQ 如何工作的简明信息,以便我可以更好地调试我编写的这个概念证明。

我在实施 MSMQ 后看到的内容:

  • 我将日志发送到 MSMQ 的应用程序几乎立即返回(而不是等待提交日志),这正是我想要的。
  • 尽管我在不到 30 秒的时间内向 MSMQ 应用程序发送了 1000 条日志,但所有 1000 条日志都需要几分钟才能到达数据库。似乎我的队列启用了某种限制,它阻止了日志请求,但我不知道如何/在哪里检查。
  • 如果我在从 MSMQ 服务接收日志的服务器上使用 net.tcp,我会收到大量服务超时错误,并且只有 90%(左右)的日志进入数据库,但如果我使用 basicHttpBinding,它可以可靠地工作。

这是我的 MSMQ 服务中的代码:

这是我创建 MSMQ 服务的代码

这是我用来调用 MSMQ 服务的应用程序中的代码:

我感谢有人可以提供的任何帮助。对于使用 MSMQ 可以使用哪些功能集,我有点迷茫。我通过谷歌做了 6 个小时左右的研究。我发现的大多数文档都很旧(2007 年)并且很难阅读。也许他们希望我对这个主题有一些基本的知识水平。

0 投票
2 回答
2463 浏览

wcf - 给定 net.msmq 地址,如何检查此队列是否存在?

我有一项服务,它通过 WCF 将内容插入 MSMQ。但是,在将任何消息插入队列之前可能需要很长时间,此时会发生不存在队列的错误。

我的想法是遍历 WCF 配置并在启动时检查队列是否存在。MSMQ WCF 端点具有格式为 的地址net.msmq://machine/private/queue

给定 net.msmq 格式的 WCF MSMQ 地址,如何在不排队实际消息的情况下检查此队列是否存在?

编辑

私有队列可以与服务存在于同一台机器上,也可以存在于远程服务器上。

0 投票
1 回答
150 浏览

msmq - 关于 LAB EntLib、MSMQ 和 WCF

我对这个主题不太满意,因为直到现在我一直都在编写自己的记录器。

我有一个 WCF REST Web 服务。该服务需要记录从错误到谁使用它以及何时使用它的信息。

为此,选择了 Enterprise Library (5.0) 中的 Logging Application Block。为了保持良好的性能,我们决定使用 MSMQ。目的是将日志存储在那里,直到我们将其放入文件中。

我在几个网站上看到我们可以使用 WCF 将消息传输到 MSMQ,然后使用另一个实体处理队列,或者我们可以使用 MSMQ 作为传输协议与 WCF 通信。现在我只是使用 LAB 的 Logger 类将日志插入队列中。

我只想使用 MSMQ 将我的 web 服务与日志记录功能不同步。

所以这是我的问题:MSMQ 在哪些情况下对 WCF 有用?在我所描述的情况下,使用另一个 WCF 应用程序只是在文件中记录一些内容是不是有点矫枉过正?