1

如何使工作配对命名空间接收方将消息从积压队列移动到主队列。它似乎适用于发送者,但接收者设置 EnableSyphon = true 似乎不起作用。我总是可以看到积压队列中的消息并且不断增长。我能找到的所有信息都是这个 Code Block ,但由于 Service Bus 2.4 Messaging.Factory 没有 Open 方法。

factory = MessagingFactory.Create(SB_Primary_NS_Address);
factory.PairNamespace(new SendAvailabilityPairedNamespaceOptions
{
    EnableSyphon = true,
    TransferQueueCount = 10,
    MessagingFactory = paired-NS_factory,
    NamespaceManager = paired-NS_manager
});
factory.Open();
4

1 回答 1

1

他们改变了如何将命名空间与最新版本配对。相反,您通过传入 PairedNamespaceOptions 实例从主消息传递工厂调用 Async 函数 (PairNamespaceAsync)。注意返回的Task实际上是Promise类型,所以不要对Task调用Start(),因为它已经启动了,直接调用Waiting()即可。

此外,您必须确保辅助命名空间和 MessagingFactory 具有管理级别的安全性。对于 MessagingFactory 来说,仅仅拥有一个 Publish 是不够的,它不会将消息发送回 Primary Queue/Topic。

// assume members _messagingFactory, _secondaryNamespaceManager, _secondaryManagementMessagingFactory have been assigned.

try
{
    var pairedNamespaceOptions = new SendAvailabilityPairedNamespaceOptions(_secondaryNamespaceManager,
            _secondaryManagementMessagingFactory,
            1,
            TimeSpan.FromSeconds(30),
            true);
    _messagingFactory.PairNamespaceAsync(pairedNamespaceOptions).Wait();
}
catch (Exception ex)
{
    // logging or handle
}

一些有用的链接。

于 2015-05-08T04:08:23.290 回答