问题标签 [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.

0 投票
1 回答
2801 浏览

wcf - 通过 HTTP 的 MSMQ 调用未到达目标队列

我有一个使用 MSMQ 通信的 WCF 服务,当我在本地网络上运行服务时,我在客户端配置文件中配置服务端点以指向主机,例如,如果服务主机上指定的端点是:

我将客户端配置为向此端点发送消息:

显然 192.168.1.5 是主机的 IP,这就像一个魅力。我在 IIS 7 中托管我的服务,我在 IIS 上激活 MSMQ 侦听器,提供适当的访问权限等(Tom Hollanders 文章中的几乎所有内容),我什至可以在浏览器中通过 http 访问我的服务,但是当我创建我的客户端时托管在 IIS 中并在客户端配置端点的服务App.config,自然我将我的客户端配置为:

这就是事情出错的地方。我发送的消息一直在客户端计算机上的传出队列中排队:DIRECT=OS:[ServiceHostPublicIP]\private$\MsmqService\MyMsmqService 并且队列的状态始终为:“等待连接”。我已尝试将队列传输协议设置为SRMP,我的队列名称与 IIS 要求的服务名称相同,并且我已授予队列适当的权限。有没有人最近遇到过这个问题?有任何想法吗?如果有人可以通过 HTTP 共享 MSMQ 的工作示例(如果他们有的话),那就太好了。

任何帮助将不胜感激。提前致谢。

0 投票
1 回答
1416 浏览

msmq - NetMsmqBinding WAS 服务无法从工作组中的远程 MSMQ 队列读取消息

我们有一个使用 WAS 和 net.msmq 绑定托管在 IIS 中的服务。该服务从私有事务 MSMQ 队列中读取消息。我需要它通过从位于不同机器上的队列中读取服务来工作。如果队列在同一台机器上,我可以让它工作,但如果它在不同的机器上就不行。

环境信息

  • 服务器正在运行 Windows Web Server 2008 R2。
  • 服务器在一个工作组中,即它们不是域的一部分。
  • MSMQ 已安装但没有目录服务集成功能。
  • 我相信安装了所需的 Windows 功能(WCF 非 Http 激活和 Http 激活、消息队列服务器、多播支持、消息队列 DCOM 代理、Windows 进程激活服务、.NET 环境、配置 API)
  • 我在机器上进行了以下注册表更改:
    • NewRemoteReadServerAllowNoneSecurityClient = 1
    • NewRemoteReadServerDenyWorkgroupClient = 0
    • AllowNonauthenticatedRpc = 1
  • DTC 已启用,网络 DTC 访问、允许远程客户端、允许入站、允许出站、不需要身份验证和启用 SNA LU 6.2 事务均已选中。
  • 防火墙已进行更改。

服务配置信息

  • 我们正在使用 netMsmqBinding。
  • netMsmqBinding 的传输安全模式为无。
  • ExactlyOnce 是真的
  • UseActiveDirectory 为假
  • 耐用是真的
  • 队列地址为 net.msmq://the-host-computer-name/private/EmailAsyncService

WCF 日志记录

  • 有一个警告:

无法检测队列是否为事务性”。错误中队列的 FormatName 为 DIRECT=OS:the-host-computer-name\private$\EmailAsyncService

  • 然后出现错误:

将 'the-host-computer-name\private$\EmailAsyncService' > 队列路径名称转换为格式名称时出错:无法识别的错误 -1072824300 (0xc00e0014)。排队通道上的所有操作均失败。确保队列地址有效。MSMQ 必须在启用 Active Directory 集成的情况下安装并且可以访问它。

我试过的

  • 如果我手动创建和使用 MessageQueue 实例,我可以从服务所在的机器读取远程队列中的消息。
  • 我尝试将服务托管为独立的控制台应用程序。错误消息是相同的。
  • 我已经尝试禁用所涉及的防火墙。
  • 我已经尝试了http://msdn.microsoft.com/en-us/library/ms752246.aspx上的更改,这些更改与在加入工作组的计算机上运行此类服务有关。(“激活服务和工作进程都必须使用特定的用户帐户运行(两者必须相同),并且队列必须具有特定用户帐户的 ACL...在工作组中,服务还必须使用不受限制的令牌。”)我当前使用的用户帐户是网络服务。

一些想法

  • 我不认为存在防火墙或权限问题。
  • 尽管服务配置已将 UseActiveDirectory 设置为 false,但 net.msmq://the-host-computer-name/private/EmailAsyncService 的队列地址似乎正在转换为 the-host-computer-name\private$ \EmailAsyncService,AFAIK 是一种名称格式,需要通过 Active Directory 进行查找。
0 投票
2 回答
1182 浏览

wcf - 如何在发送到通过 MQ 激活的 WF 服务的 MSMQ 消息的客户端设置优先级

我有一个 WCF 激活的工作流服务 (XAMLX) 设置(使用 WorkflowServiceHost 托管)。

此 WCF WebService 具有“NetMsMqBinding”绑定和基于 net.msmq 的端点,客户端使用该端点来安排操作。

在客户端,我使用 Visual Studio 生成代理存根以与此 WCF 服务进行通信。一切正常,我可以看到消息出现在服务器上的(日志式)MQ 中,WCF 从队列中提取消息以根据消息激活配置的工作流。

我需要控制发送到 MQ 的消息的优先级,以便某些 WCF 客户端可以优先处理其工作流。

似乎 NetMsMqBinding 并不真正支持 MQ 消息优先级。它是否正确?如果是这样,我该如何实现/模拟呢?我可以使用 MQ 触发器根据某些标志更改消息的优先级吗?

0 投票
1 回答
3658 浏览

c# - 将 netMsmqBinding 绑定与 IIS 托管一起使用时 WCF 服务托管失败

使用 IIS 托管时的 WCF 服务失败。该服务的 web.config 是

服务合同是

在 IIS 中托管服务时,显示以下消息:

配置已经设置为exactOnce = false,不知道为什么会出现这个错误,有什么帮助吗?

0 投票
2 回答
711 浏览

.net - WCF NetMSMQBinding 与非 WCF 客户端

我有一个与 WCF netMsmqBinding 相关的查询。

netMsmqBinding非 .Net 客户端是否可以使用 wcf ?说一个Java客户端。

0 投票
1 回答
305 浏览

wcf - 使用 netMsmqBinding 使 WCF 通道出错

我有一个通过 netMsmqBinding (MSMQ3) 的 WCF 服务。服务代码不会在 WCF 事务控制下运行,因为服务中的某些操作没有事务能力并且无法回滚。据我了解,这意味着我没有得到任何有毒消息处理等的好处。所以一旦我的服务代码被调用,消息就永远不在队列中。

如果我的服务出现严重故障,我想防止进一步的消息丢失。所以我记录了刚刚失败的消息,然后引发了一个普通的异常(不是 FaultException)。与任何其他 WCF 服务绑定一样,我希望这会使通道(在本例中为 MSMQ 通道调度程序)发生故障,并且不会从队列中接收更多消息。

但我似乎无法让这种行为(没有双关语)起作用。无论我的服务代码是否引发异常,我都会继续将消息路由到服务。

我在这里错过了什么吗?netMsmqBinding 是否像 http 绑定一样为每个请求创建一个新通道?如果是这样,那么任何关于如何解决我的问题的想法将不胜感激。

0 投票
1 回答
215 浏览

.net - NetMsmqBinding 关闭时丢失消息

我一直在用非事务队列测试 WCF 的 NetMsmqBinding。我发现服务,即从队列中读取的部分,在关闭时偶尔会丢失一条消息。

例如,如果我有一个包含数字 1 - 10 消息的队列,并允许它在重新启动之前读取前五条消息(1、2、3、4、5),那么我可能会收到的其余消息是(7、8、9、10)。'6',它在服务关闭之前要接收的消息丢失了。

这是因为我使用的是非事务性队列吗?有什么方法可以防止这些消息在不进行事务处理的情况下丢失?

谢谢

0 投票
2 回答
649 浏览

msmq - 设计大容量 MSMQ

我们有许多发送数据包的通信服务器。我们希望将来自这些服务器程序的这些数据包存储在 MSMQ 中,直到更新程序处理它们。数据丢失一直是一个问题,我们希望不丢失来自这些服务器程序的任何数据包,并希望有一个高效和高性能的解决方案。

最好的设计方法是什么?

0 投票
0 回答
156 浏览

c# - WCF 运行时行为属性

我想知道是否有办法执行以下操作:

主要的 WCF 服务位于一个类库中,该类库被调用/绑定到 MSMQ。有一个单独的控制台应用程序来托管服务。

2个不同的项目。当然,控制台应用程序引用了处理消息的类库。

我想要自定义处理毒消息。没问题,我可以创建一个属性并将其装饰在服务本身之上,然后拥有一个实现 IErrorHandler 并移动消息的自定义类。这都在类库中

问题:为了让服​​务继续处理消息,必须重新启动服务主机。

但这是不可能的,因为类库没有(也不应该!)引用托管服务的控制台应用程序。

重新启动客户端的最佳方法是什么?我在想也许有一种方法可以在运行时附加属性和错误处理程序,它们将被移动到控制台应用程序项目,然后在创建服务时以某种方式在运行时附加属性?还是我得意忘形了?

0 投票
1 回答
503 浏览

wcf - WCF 与 MSMQ DTC - 关闭 NHibernate 会话

我有一个 WCF MSMQ 服务(托管在 Windows 服务中)。我的方法上有 TransactionScopeRequired 属性。

我正在使用 Nhibernate 将我的数据保存到我的数据库中。我想确保在每次通话后关闭每个 Nhibernate 会话。

我在数据访问中使用了以下方法(使用城堡设施)

但是当我的主要服务方法退出时,我收到了一个错误,因为我已经处理了 Nhibernate 会话,并且我认为 DTC 需要它来完成它的提交。

我的问题是:

关闭 Nhibernate 会话的最佳方式是什么 - 在 DTC 提交之后(即在我退出我的服务方法之后?)。

谢谢你。