如何在不使用Rebus耦合其他项目的事件类型的情况下订阅事件?

时间:2018-07-26 03:22:56

标签: rebus rebus-rabbitmq

我有几种微服务,其中许多具有集成事件。想象一下一个微服务M1,它需要订阅一个位于微服务M2中的事件。如何在不耦合M2和M1的情况下预订活动?是否有另一种订阅方式而不使用事件类型,而使用事件名称呢?

2 个答案:

答案 0 :(得分:1)

虽然Rebus鼓励使用基于类型的主题,但其基础机制是基于简单的基于字符串的主题名称。

“原始主题”机制可通过bus.Advanced.Topics使用,因此您可以

await bus.Advanced.Topics.Subscribe("whatever");

订阅whatever主题,然后可以

await bus.Advanced.Topics.Publish("whatever", yourEvent);

将事件发布到该主题。

RabbitMQ Topics sample演示了如何完成此操作,甚至显示了RabbitMQ的基础主题通配符可以如何使用。

答案 1 :(得分:0)

有两种方法(取决于您的需要)可用于解决这种情况 首先将其传递给IHandleMessages并处理动态对象 第二是通过提供ISerilizable的实现 我们使用了第二个选项。

进一步阅读: https://github.com/rebus-org/Rebus/issues/24