Rebus - 多次传输

时间:2015-09-17 15:20:20

标签: rebus

使用Rebus,是否可以在应用程序中配置多个传输?

我们的业务领域是图像处理,由于处理的图像可能很大,我想使用InMemory传输在一个服务(WebApi 2)内进行通信以标记化(Guid)并将图像保留为处理成数据库。

此外,在图像被标记化后,我们希望使用RabbitMQ传输将图像发送到ImageProcessingService(控制台应用程序 - 使用TopShelf),并在处理完成后回复调用应用程序(WebApi)

我似乎无法找到正确的方法来处理我希望使用InMemory传输在应用程序(WebApi)中使用消息传递的场景,并且还让WebApi能够通过RabbitMQ传输发送到ImageProcessingService。

1 个答案:

答案 0 :(得分:1)

显然我不知道你问题的细节,但你是否考虑将图像数据保存在其他地方(网络共享,MongoDB GridFS,SQL Server LOB等)?

根据我的经验,如果您仅使用消息进行协调,一切都变得更容易处理,而不是传输实际的大量数据。

PS:我在某个时候尝试过多模式传输,这可以让你做到这样的事情:

Configure.With(...)
    .Transport(c => c.Multi()
        .Add("amqp", t => t.UseRabbitMq(connStr, "rabbitqueue")
        .Add("inmem", t => t.UseInMemoryTransport(network, "inmemqueue"))
    .Start();

然后在amqp://rabbitqueueinmem://inmemqueue表单上指定地址,以分别通过RabbitMQ和内存传输来处理配置的端点。

它可以简单地包装任何数量的传输,然后您需要使用协议进行限定,这可能是您认为合适的任何内容。

这种解决方式虽然引发了一系列问题,但引入起来并不那么简单。