私は、rabbitmq/apiを使用してリモートホストからrabbitmqにメッセージを公開するケースがあり、私はMassTransitの消費者に公開されたメッセージの処理を渡したいと思います。MassTransitとmessageTypeのプロパティ
は、私が気づく可能性として、MassTransitの消費者との成功の「最小限必要なプロパティ」扱いのメッセージは次のようになります。
ペイロード:
{
'messageId':'86fd0000-17e1-ac9e-4bde-08d3f1e8553e',
'correlationId':'86fd0000-17e1-ac9e-4165-08d3f1e8553e',
'conversationId':'86fd0000-17e1-ac9e-4d99-08d3f1e8553e',
'messageType':[
'urn:message:Tm.Core.Integration.RabbitMq.Bus.Extension:EndScenario',
'urn:message:Tm.Core.Integration.RabbitMq.Command:IEndScenario',
'urn:message:Tm.Core.Integration.RabbitMq.Command:ICommand'
],
'message':{
'correlationId':'86fd0000-17e1-ac9e-4165-08d3f1e8553e',
'scenarioId':'6c3fda36-8ded-41f0-9536-dd76cd146963'
}
}
あなたが見ることができるように、にmessageTypeプロパティは情報が含まれています、それはそれを責任ある消費者に渡すのに役立ちます(そうではありませんか?)。
MassTransitのコンシューマを使用してこのようなメッセージを受け取り、処理を続ける方法はありますか?遅かれ早かれリファクタリングのいくつかが私のコードを破ることに本当に恐れています(messageTypeはメッセージのランタイムタイプに依存しますね、それはどうですか?)、私はそれを防止したいと思います。
私はルーティングのいくつかのコードを書く必要があることを理解しています(mbはこのメッセージを受け取り、別の情報を公開しています)。
私の目標は、このようなメッセージを渡すことです:メッセージエンベロープの
{
'messageId':'86fd0000-17e1-ac9e-4bde-08d3f1e8553e',
'correlationId':'86fd0000-17e1-ac9e-4165-08d3f1e8553e',
'conversationId':'86fd0000-17e1-ac9e-4d99-08d3f1e8553e',
'message':{
'correlationId':'86fd0000-17e1-ac9e-4165-08d3f1e8553e',
'scenarioId':'6c3fda36-8ded-41f0-9536-dd76cd146963'
}
}