あなたは例えば、任意のユーザ定義のタグテキストを送信するためにIMessage.Tag
を使用することができます。
using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Tag = "Custom"
});
}
そうでなければ、私は今も新しいのカスタムヘッダを送信できるようになりますどのカスタムヘッダin this commitを送信するためのサポートを追加しましたIMessage.Meta
文字列辞書、例えば:
using (var mqClient = mqServer.CreateMessageQueueClient())
{
mqClient.Publish(new Message<HelloIntro>(new Hello { Name = "World" }) {
Meta = new Dictionary<string, string> { { "Custom", "Header" } }
});
}
あなたのMQ RegisterHandler
にアクセスすることができ、例えば:
mqServer.RegisterHandler<Hello>(m =>
new Message<HelloResponse>(new HelloResponse {
Result = "Hello, {0}!".Fmt(m.GetBody().Name)
}) {
Meta = m.Meta
});
MQハンドラは、カスタムヘッダーの完全なラウンドトリップを可能にするIMessage
応答も返すようになりました。
この変更はv4.0.57から入手できます。現在はavailable on MyGetです。
ありがとう@mythz! ServiceStackの最新バージョンにアップグレードし、Metaプロパティを利用する必要があります。そのような短い順序でそれを実装していただきありがとうございます!私はタグをRedisにうまく渡すことができました。今、それを消費する面では、私は 'GlobalMessageRequestFilters'でそれにアクセスできますか?さもなければ、どのハンドラに対しても 'RegisterHandler'で取得する必要はありません。どうすればそれにアクセスできますか?私がハンドラを設定した理由は、 'message_server.RegisterHandler(ServiceController.ExecuteMessage);'もう一度ありがとう! –
napo
@napo 'BasicRequest.Message'プロパティにアクセスするには' IRequest'を 'BasicRequest'にキャストする必要があります。 – mythz
!ありがとう、それはトリックです!私はそれをIMessage/Messageとしてキャストしようとしていて、それから何も得ることができませんでした。今私はそれを得ることができます - 完璧!今、最後の質問は...すべてのメッセージにタグを追加する方法があるので、私が作成するすべてのメッセージに明示的に追加する必要はありませんか?再度、感謝します! – napo