メッセージングに基づいて一部のワーカーロールを開始するアプリケーションで作業しています。C#のMasstransit/RabbitMQで特定のチャネル/ルーティングキーにメッセージを送信
これは私は、アプリケーションが仕事をしたい方法です:
Client sends a request for work (RPC).
One of the worker roles accepts the work, generates a random id, and responds to the RPC with the new id.
The worker will post its debug logs on a log channel with the id.
The client will subscribe to this channel so users can see what's going on.
RPCが正常に動作しているが、私は、ログの送信を実装する方法を見つけ出すように見えることはできません。
これが作業を受け入れるコードがある(簡体字)
var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
{
var host = sbc.Host(new Uri("rabbitmq://xxxxxx.nl"), h =>
{
h.Username("xxx");
h.Password("xxxx");
});
sbc.ReceiveEndpoint(host, "post_work_item", e =>
{
e.Consumer<CreateWorkItemCommand>();
});
sbc.ReceiveEndpoint(host, "list_work_items", e =>
{
e.Consumer<ListWorkItemsCommand>();
});
});
CreateWorkItemCommand
、など今、どのように私は、ログ送信Masstransitとを実装して作業を行う、スレッドを作成しますか?私はのようなものを考えていた:
bus.Publish(
obj: WorkUpdate{ Message = "Hello world!" },
channel: $"work/{work_id}"
)
そして、クライアントは、何かこれを行うだろう:私はこれを行う方法を見つけることができないよう
bus.ReceiveFromEvented($"work/{rpc.work_id}").OnMessage += { more_psuedo_code() }
を。
誰でもお手伝いできますか?
ありがとうございます!