gpt4 book ai didi

c# - 为什么 nservicebus 忽略我的订阅消息?

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:46 24 4
gpt4 key购买 nike

我有两个简单的控制台应用程序来集成 nservicebus。一个是发布者,另一个是订阅者。本例中的订阅者还通过 Send() 从另一个 Web 应用程序接收其他消息。当我在我的开发环境中本地运行它们时,没有任何问题,一切都按预期进行。我可以从 Web 应用程序发送消息并在我的“订阅者”上接收它们,以及在我的订阅者上接收发布的消息。

但是,当部署到 Server 2008 R2 时,订阅者会向发布者 StatusQueue 发送一条初始消息,内容如下:

<?xml version="1.0"?>
<Messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/NServiceBus.Unicast.Transport">
<CompletionMessage>
<ErrorCode>0</ErrorCode>
</CompletionMessage>
</Messages>

我认为这只是最初的“我想订阅您发布的 Messages 类型的消息。*”。此消息只是位于队列中,永远不会被发布者接收。

发布者的配置:

<MsmqSubscriptionStorageConfig 
Queue="StatusQueueSubscriptions" />

<MsmqTransportConfig
InputQueue="StatusQueue"
ErrorQueue="StatusError"
NumberOfWorkerThreads="1"
MaxRetries="5"/>

订阅者的配置:

<MsmqTransportConfig
InputQueue="AppsInputQueue"
ErrorQueue="AppsError"
NumberOfWorkerThreads="1"
MaxRetries="5"/>

<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="StatusQueue"/>
</MessageEndpointMappings>
</UnicastBusConfig>

最佳答案

您的订阅被忽略的可能原因是发布者的传入消息与您订阅中定义的类型不匹配。

因此,当发布者收到消息时,它会根据其中保存的订阅对其进行评估,并会找到不匹配项,因此不会向您的订阅者发送任何消息。

这可能是因为 NServiceBus 中的消息类型不仅由程序集/类型名称定义,而且由程序集版本和公钥 token 定义。

检查发布者和订阅者持有的消息组件的版本/PK token ,并确保它们完全匹配。

更新

好的,听起来您的输入队列的权限在某种程度上阻止了您的发布者服务帐户读取消息。尝试完全控制服务帐户。

此外,您是否检查了日志中错误的默认记录位置? (C:\Users(用户名)\AppData\Local\Temp)

关于c# - 为什么 nservicebus 忽略我的订阅消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com