问题标签 [netmsmqbinding]
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.
c# - 为什么我排队的 WCF 消息会静默消失?
我在服务器 THOR 上有一个事务性 MSMQ 队列设置。我可以使用以下代码从工作站向该队列发布消息:
但是,当我尝试使用 WCF 连接时,我的消息永远不会出现在队列中。这是我正在使用的配置:
和代码:
我没有任何例外,但在 THOR 的队列上没有发布任何消息。有任何想法吗?我什至不知道如何调试它,因为它只是默默地失败。
更新
如果我将我的 MSMQ URI 更改为“net.msmq://localhost/private/myqueue”,那么它将发布到我设置的本地事务队列。队列本身的设置是相同的(例如,我执行了相同的步骤来创建 localhost 和 THOR 队列)。
.net - 为什么我的 netmsmqbinding 不能进行双向绑定?
我正在使用 WCF 和 netmsmqbinding,我收到以下错误消息:
合同需要 TwoWay(请求-答复或双工),但绑定 'NetMsmqBinding' 不支持它或未正确配置以支持它。为什么?
我的环境是window 2003 server。wcf servcie 作为窗口服务托管。预先感谢您的帮助。
wcf - 使用 WCF 直接发送到 MSMQ 队列
我有一个从各种 MSMQ 获取消息的 Windows 服务。该服务从队列中提取消息,然后根据消息来自的队列执行特定的工作流。是否可以将 WCF 服务配置为接受来自端点的消息并将其放入队列中?我希望服务有多个端点,并且根据接收消息的端点,消息将被放置在不同的队列中。我已经看到有关 netMsmqBinding 的信息,但到目前为止,我无法确定这是否适用于我正在考虑的用途。
任何帮助表示赞赏,
麦克风
wcf - 使用 netMsmqBinding 读取消息的 WCF Msmq 问题
我有一个使用 netMsmqBinding 的 WCF 服务,用于将消息添加Msmq<string>
到队列中。消息添加得很好,我可以通过计算机管理控制台在队列中看到它们。
我有另一个 WCF 服务正在尝试从队列中检索消息,这就是我遇到问题的地方。每当将消息添加到队列中时(该位工作正常),我的服务中的方法就会被调用,但该Msmq<string>
消息似乎具有所有空值。
我不确定如何从中获取信息Msmq<string>
?这是我的服务细节...任何帮助表示赞赏..
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 对象。
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 年)并且很难阅读。也许他们希望我对这个主题有一些基本的知识水平。
wcf - WCF 服务对所有请求进行排队
我有一个 wcf 服务并处理大量客户端(服务器文档生成)。该服务应该收到很多请求,并且应该在队列中处理。它也有一个回调。(回调将返回成功生成的文档)。我仍在使用 PIA 并将在未来实现 OpenXML。
wcf msmq 是实现这个的方法吗?
是否有任何样本可能相关?以前它在本地机器上运行,但现在想将其更改为所谓的“服务器生成”
.net - 为什么 server.connect() 不能在 server.create() 工作时工作?
在设置一个简单的 streaminsight 应用程序时,我遇到了 server.create() 工作且 server.connect() 失败的问题。我不确定可能是什么潜在原因。
编辑:这里的源代码:http: //pastebin.com/XigdxXLd
我的设置:
- 客户端发送数据的私有 msmq
- 服务器使用输入适配器读取此 msmq 并将输出生成到文本文件
使用上述设置,如果我创建了一个 streaminsight 服务器的内存实例(使用server.create("MyInstance")
,它会消耗 msmq 中的所有消息并且工作正常(应用程序退出前大约需要一分钟,因为它喜欢坐在 server.dispose () 叫了一会儿)。
如果我使用以下命令切换到 server.connect:
它只消耗 msmq 的一条消息,并且应用程序永远不会完成。该项目在一分钟后超时application.Delete()
(其中应用程序是 MS.CEP.application)。
有人可以帮我解决我可能做错的事情吗?
另外,我最近尝试打开该StreamInsightHost.exe.config
文件,但记事本和 Visual Studio 都不允许我打开它。不确定这是否会影响任何事情,但我只是想我会把它放在那里。
wcf - 60 秒后 MsmqException (0xC00E0051)
我将 netMsmqBinding 与事务队列一起使用,尽管调用 WCF 服务没有问题,但该服务在处理消息后仅 60 秒就抛出 MsmqException。
这是一个例外:
System.ServiceModel.MsmqException (0xC00E0051):从队列接收消息时出错:无法识别的错误 -1072824239 (0xc00e0051)。确保 MSMQ 已安装并正在运行。确保队列可用于接收。在 System.ServiceModel.Channels.MsmqInputChannelBase.TryReceive(TimeSpan timeout, Message& message) 在 System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive(TimeSpan timeout, RequestContext& requestContext) 在 System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive(TimeSpan timeout, RequestContext& requestContext) )
我做了一些研究,调试和跟踪,我发现当收到一条新消息时,会打开两个事务,第一个事务在服务执行后提交,但第二个从未提交,所以在 60 之后秒,DTC 中止它抛出 MsmqException。这是操作定义:
关于正在发生的事情的任何想法,我该如何解决这个问题?
更新:
配置:
服务实施:
服务合同:
完整的行为:
- 客户端发送消息
- 服务已启动
- DTC 启动两个事务(我可以在 DTC 监视器和 TransactionManager.DistributedTransactionStarted 事件中看到它们)
- 第一个事务在操作完成后立即完成
- 第二个事务在 60 秒后中止(抛出 MsmqException)
- wcf 主机 (IIS) 有时会出现故障(我有一些代码可以自动恢复它,显然这种行为在 .net 4 中已经改变)
- 如果主机被破坏并自动恢复,下一条消息将再次发生
- 如果主机没有损坏,则第二次事务将不会在下一次开始,一切都会正常工作:)。
- 如果我回收 AppPool,问题又开始了
.net - WCF over MSMQ 的随机 MSDTC 异常
我们有一个使用 NetMsmqBinding 通过 MSMQ 执行 WCF 调用的服务。不幸的是,我们看到从 MSDTC 服务中随机出现的(在数千次调用后每隔几天)AccessViolationException。此错误仅发生在物理上较旧的 XP 生产系统上,我无法在 dev 中重新创建它。我什至求助于在虚拟机中成像和运行实际的生产实例,但一切都运行了好几天。我比较了我能找到的每个 MSMQ 和 MSDTC 相关 dll 的版本号,它们都匹配。最近已应用 Windows 更新。WCF 终结点使用单个 InstanceContextMode 运行,并且 ConcurrencyMode 也设置为单个。
没有真正解决问题,无论如何我可以从以下错误中捕获/恢复吗?
有没有办法阻止 NetMsmqBinding 促进交易? 除了队列本身,我们没有使用任何其他资源。