我有一个Windows服务,可从各种MSMQ拾取消息。该服务从队列中获取消息,然后根据消息来自队列执行特定的工作流程。是否可以配置WCF服务以接受端点的消息并将其放在队列中?我希望该服务具有多个端点,并且根据端点收到的消息,该消息将放置在其他队列中。我已经看到有关NetMsmqbinding的事情,但是到目前为止,我还没有确定这是否是为了使用我正在考虑的使用。

任何帮助都将受到赞赏,

麦克风

有帮助吗?

解决方案 2

我能够解决这个问题的方法是创建一个可以将配置名称传递给的自定义ServiceHost类。这是使用服务实现类型名称来定位配置的默认实现的替代方法。这使我能够在同一机器上运行同一实现的多个实例。除此之外,在自定义服务类中,我添加了一个自定义邮件感知器,该范围会将自己附加到每个端点以侦听消息。然后,我使用IDISPATCHMESSAGEINSPECTOR.AFTERRECEIVEREQUEST()方法获取传入消息,然后将其放入我在配置中定义的队列中。有点复杂,但它适合我们的场景。

其他提示

我是否正确地得到了 - 您想拥有

  • 使用多个终点暴露于外界的WCF服务
  • 根据消息进入WCF服务的哪个端点,它应该将这些消息放入单独的MSMQ队列中?

您肯定可以拥有WCF服务,该服务将使外部曝光任意数量的端点,并将传入的消息放入MSMQ队列中。我只是不确定您是否可以在WCF服务方法中知道请求的端点是........通常,WCF服务类别对请求的来源一无所知通常不需要知道...)。

我看到了一些方法:

  • 有多个服务,每种(类型的)端点一项;他们可以共享所有代码和所有代码,但是如果您将其分为单独的服务类,那么每个服务类都将固有地 知道 它使用什么端点,因此可以知道将信息输入什么

  • 找到一种发送一些标题信息以及以某种方式告诉您在哪里输入消息的消息

  • 在WCF 4.0中,您也许可以使用新的WCF路由服务来做些事情。...不确定如何工作 - 因为它也需要某种“提示”才能知道它被调用了哪个端点以及如何路由传入消息

net.msmq绑定允许WCF客户端直接写入MSMQ队列,即使排队阅读的WCF服务不存在 - 甚至不必存在。 net.msmq绑定还允许从队列中自动读取。没有使用消息标题写给或从队列中读取。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top