当试图解决我的问题,不接收消息通过RabbitMQ使用Rebus,我尝试玩这个例子:https://github.com/rebus-org/RebusSamples/tree/master/PubSubNative并发现从发布者(pub)发布到订阅者(subs)的对象,必须是完全相同的共享对象“StringMessage”对于subs和pub。当我在每个项目中创建相同名称和属性的类时,它不起作用。我喜欢它没有共享文件,但有自己的类-如果可能的话
当试图解决我的问题,不接收消息通过RabbitMQ使用Rebus,我尝试玩这个例子:https://github.com/rebus-org/RebusSamples/tree/master/PubSubNative并发现从发布者(pub)发布到订阅者(subs)的对象,必须是完全相同的共享对象“StringMessage”对于subs和pub。当我在每个项目中创建相同名称和属性的类时,它不起作用。我喜欢它没有共享文件,但有自己的类-如果可能的话
2条答案
按热度按时间zlhcx6iw1#
是的,这是可能的,但是你必须绕过接收端的序列化,以某种方式解析接收方的
StringMessage
定义,即使是发送方的StringMessage
被序列化了。你可能想看看the SharedNothing sample,它演示了这个特殊的东西。
主要部分是
CustomMessageDeserializer
,它使用这个字典将简单的、程序集限定的类型名Map到所需的类型。798qvoo82#
我可以只使用RabbitMQ Client发送消息到rebus,而不需要rebus或来自发送方的共享消息类型。然而,在接收端,我定义了所有的类。这通常是一种方式。
我在.net 4.6项目中使用了这个窗口窗体应用程序,它只需要发送消息。
我有这个帮手:
字符串
然后我可以这样发送信息
型
这里是我们使用的常数
型
虽然我可能不会解决你的问题,这种方式可以帮助我避免共享类(消息类型),那里没有必要。这样,消息就序列化了所有的头,rebus将处理它们没有任何问题。
雷加兹