仅发送 MassTransit
MassTransit Send only
我正在实施服务总线并查看 MassTransit。我的模式不是 Publish/Subscribe,而是 Sender/Receiver,其中接收器可以离线并稍后恢复在线。
现在我开始编写测试以验证 MassTransit 是否使用以下代码成功传递了消息:
bus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq(
cfg =>
{
cfg.Configurator.UseJsonSerializer();
cfg.Configurator.ReceiveFrom("msmq://localhost/my_queue");
cfg.VerifyMsmqConfiguration();
});
});
那我就抢公车,发个这样的消息:
bus.Publish<TMessage>(message);
我从 MSMQ 注意到,创建了两个队列并发送了消息,因为 Mass Transit 没有引发任何错误,但我在队列容器中找不到任何消息。
我做错了什么?
更新
阅读 Mass Transit 新闻组,我发现在 Sender/Receiver 的情况下,接收者可以稍后随时在线,消息可以 Send 使用此代码:
bus.GetEndpoint(new Uri("msmq://localhost/my_queue")).Send<TMessage>(message);
同样在我的场景中,我不是写一个Publisher/Subscriber而是一个Sender/Receiver。
首先,要发送,您可以使用简单的 EndpointCacheFactory 而不是 ServiceBusFactory...
var cache = EndpointCacheFactory.New(x => x.UseMsmq());
从缓存中,您可以通过地址检索端点:
var endpoint = cache.GetEndpoint("msmq://localhost/queue_name");
然后,您可以使用端点发送消息:
endpoint.Send(new MyMessage());
要接收,您将按照上面指定的方式创建一个总线实例:
var bus = ServiceBusFactory.New(x =>
{
x.UseMsmq();
x.ReceiveFrom("msmq://localhost/queue_name");
x.Subscribe(s => s.Handler<MyMessage>(x => {});
});
接收进程完成后,在 IServiceBus 实例上调用 Dispose
。一旦您的发布者关闭,请在 IEndpointCache 实例上调用 Dispose
。
不要处置单个端点 (IEndpoint
) 实例,缓存会保留它们供以后使用,直到它被处置。
我正在实施服务总线并查看 MassTransit。我的模式不是 Publish/Subscribe,而是 Sender/Receiver,其中接收器可以离线并稍后恢复在线。 现在我开始编写测试以验证 MassTransit 是否使用以下代码成功传递了消息:
bus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq(
cfg =>
{
cfg.Configurator.UseJsonSerializer();
cfg.Configurator.ReceiveFrom("msmq://localhost/my_queue");
cfg.VerifyMsmqConfiguration();
});
});
那我就抢公车,发个这样的消息:
bus.Publish<TMessage>(message);
我从 MSMQ 注意到,创建了两个队列并发送了消息,因为 Mass Transit 没有引发任何错误,但我在队列容器中找不到任何消息。
我做错了什么?
更新 阅读 Mass Transit 新闻组,我发现在 Sender/Receiver 的情况下,接收者可以稍后随时在线,消息可以 Send 使用此代码:
bus.GetEndpoint(new Uri("msmq://localhost/my_queue")).Send<TMessage>(message);
同样在我的场景中,我不是写一个Publisher/Subscriber而是一个Sender/Receiver。
首先,要发送,您可以使用简单的 EndpointCacheFactory 而不是 ServiceBusFactory...
var cache = EndpointCacheFactory.New(x => x.UseMsmq());
从缓存中,您可以通过地址检索端点:
var endpoint = cache.GetEndpoint("msmq://localhost/queue_name");
然后,您可以使用端点发送消息:
endpoint.Send(new MyMessage());
要接收,您将按照上面指定的方式创建一个总线实例:
var bus = ServiceBusFactory.New(x =>
{
x.UseMsmq();
x.ReceiveFrom("msmq://localhost/queue_name");
x.Subscribe(s => s.Handler<MyMessage>(x => {});
});
接收进程完成后,在 IServiceBus 实例上调用 Dispose
。一旦您的发布者关闭,请在 IEndpointCache 实例上调用 Dispose
。
不要处置单个端点 (IEndpoint
) 实例,缓存会保留它们供以后使用,直到它被处置。