0

使用 Bus.SendToQueues 时出现错误,问题结束时出现详细错误。

我有一个使用存储帐户和密钥设置的天蓝色队列,我正在尝试使用 Bus.SendToSites 让使用 msmq 的本地服务总线处理程序向天蓝色站点发送消息。

试图让网关运行,按照: http: //support.nservicebus.com/customer/portal/articles/859548-the-gateway-and-multi-site-distribution,我正在使用这个配置:

App.config:(我是否正确设置了站点?)

<section name="GatewayConfig" type="NServiceBus.Config.GatewayConfig, NServiceBus.Core" />
<GatewayConfig>
  <Sites>
    <Site Key="Azure" Address="http://<!--STORAGE ACCOUNT NAME-->.queue.core.windows.net/<!--STORAGE ACCOUNT KEY-->" ChannelType="Http"/>
  </Sites>
</GatewayConfig>

处理程序:

Bus.SendToSites(new[] { "Azure" }, message);

在运行时,我得到以下信息:

error: Failed to send message to address: 分发者的数据地址,用作此端点发送的消息的返回地址..gateway@HFORTE

内部异常:{“格式名称无效。”}

Stacktrace: 在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,ITransaction 事务)在 System.Messaging.MessageQueue.StaleSafeSendMessage(MQPROPS 属性,IntPtr 事务)在 System.Messaging.MessageQueue 的 System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() .SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType) at System.Messaging.MessageQueue.Send(Object obj, MessageQueueTransactionType transactionType) at NServiceBus.Transports.Msmq.MsmqMessageSender.Send(TransportMessage message, Address address) in :line 0

我看到传输是 MSMQ - 这是问题所在,MSMQ 和 Azure 是不同的传输协议,如果是,如何解决?

4

2 回答 2

2

要使用网关,您必须在发送方和接收方双方都托管 NSB。网关只是为 NSB 端点打开 WCF 服务,以便您可以使用 HTTP 协议发送消息。

MSMQ 和 Azure 队列传输不能组合在一个解决方案中,因为 IBus 实例是单例的。我们必须使用 RavenDb 开发我们自己的“桥梁”服务。我们之所以选择 Raven,是因为它具有 RX 驱动的事件订阅机制,而且易于使用。由于 RavenDb 是一个文档数据库,因此我们还能够按原样保存消息(包装在一些容器中),而无需太多的操作。

于 2014-02-04T09:56:27.290 回答
0

您的站点地址不应是您的 Azure 队列的地址。应该是NServiceBus接收网关通道的地址。

在这种情况下,Azure 队列和 NSB 网关都使用 HTTP 只是一个巧合。

您的发件人(本地托管)将具有此配置

<GatewayConfig>
<Sites>
<Site Key="Azure" Address="https://some.address.com" ChannelType="Http"/>
</Sites>
</GatewayConfig>

您在 Azure 上托管的 NSB 端点将具有此网关配置

<GatewayConfig>
<Channels>
<Channel ChannelType="Http" Address="https://some.address.com" Default="True"/>
</Channels>
</GatewayConfig>

于 2014-02-10T09:09:10.223 回答