Ich habe einen Verlag, der Nachrichten an rabbitmq: // localhost/test123 Warteschlange veröffentlicht. Eine Nachricht hat TestMessage-Typ, der andere TestMessage2-Typ.Mastransit + RabbitMQ. Eine Warteschlange unter zwei verschiedenen Nachrichtentypen teilen
Verlag config:
sbc.UseRabbitMq(r => r.ConfigureHost(new MessageUrn("rabbitmq://localhost/test123"), c => { }));
sbc.UseLog4Net();
sbc.UseJsonSerializer();
sbc.EnableMessageTracing();
sbc.ReceiveFrom(new MessageUrn("rabbitmq://localhost/test123"));
Ich habe zwei seprate Verbraucher pro Nachrichtentyp (2 Verbraucher), Verbraucher 1:
//config stuff
sbc.ReceiveFrom("rabbitmq://localhost/test678?prefetch=20");
sbc.Subscribe(subs => { subs.Handler<TestMessage>(msg => { Logger.Info(msg.Text); }); });
Verbraucher 2:
//config stuff
sbc.ReceiveFrom("rabbitmq://localhost/test678");
sbc.Subscribe(
subs =>
{
subs.Handler<TestMessage2>(
msg => { Logger.Info(String.Format("rcv:txt= {0}, number= {1}", msg.Text, msg.Number)); });
});
Also, wenn ich Veröffentlichen Sie den Publisher und führen Sie einen der Konsumenten aus. Er konsumiert alle Nachrichten seines Typs und verschiebt andere in die Fehlerwarteschlange. Exchange for test678 hat Bindungen für beide Typen.
Ist es normales Verhalten, dass 2 verschiedene Verbraucher versuchen, ihre Nachricht zu lesen, während andere Nachrichten in die Fehlerwarteschlange verschoben werden? Warum kann ich nicht eine Warteschlange unter verschiedenen Verbrauchern mit verschiedenen interessierten Typen teilen?
(ich glaube, es ist nicht Masstransit Problem, eher rabbitmq Designüberlegungen oder Einschränkung)
Vielen Dank im Voraus.
Vielen Dank, Chris. Noch eine Frage: Ist das, weil Warteschlange (rabbitmq in diesem Fall) Nachricht an den Verbraucher drückt? Wenn der Benutzer also nicht weiß, wie er mit diesem Nachrichtentyp umgehen soll, verschiebt er ihn in die Fehlerwarteschlange. Ich glaube daran, dass eine solche Situation vermieden werden könnte, wenn von der Verbraucherseite gepollt würde ... – Sharov
Es gibt keine Abfrage, und es wäre auch egal, da RMQ keine Unterscheidung zwischen Nachrichtentypen macht. –