私は初心者からRabbitMQへの統合です。私はRabbitMqを使っていくつかの実験を行い、それをタスクランナーにしていました。タスクランナーとしてのウサギMq
例えばのために: レッツは、私はクラスを持っていると言うフー(と呼ばれる方法)
public static string Foo(string test, int id)
{
return "Admin" + test + id.ToString();
}
私はRabbitMQのためにキューをプロデューサーと呼ばれる別のクラスを、宣言されていていタスク、 。
using (var conn = factory.CreateConnection())
{
using (var channel = conn.CreateModel())
{
channel.QueueDeclare(queue: "KKQueue", durable: false, exclusive: false, autoDelete: false, arguments: null);
var message = "Hello World";
channel.BasicPublish(exchange: string.Empty, routingKey: "KKQueue", basicProperties: null, body: Encoding.UTF8.GetBytes(message));
Console.WriteLine(" [x] Sent {0}", message);
}
Console.WriteLine(" Press [enter] to exit.");
}
ここで、stringをメッセージとしてコンシューマに渡す必要があります。
Consumerクラスのコードは、このキュー・メッセージの文字列メッセージを受け入れている
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "KKQueue", durable: false, exclusive: false, autoDelete: false, arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var message = Encoding.UTF8.GetString(ea.Body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "KKQueue", noAck: true, consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
を消費します。 ProducerやRabbit MQ Queueに関数呼び出しを渡し、Consumeeにキューにある関数呼び出しを実行させる方法がありますか?
オブジェクトを直列化/逆シリアル化し、リフレクションを使用してコンシューマーコードでメソッドを呼び出そうとしました。代理人などを使用して、代替ソリューションを探しています。どんな助けでも大歓迎です。
シリアル化なしで行う方法はありません。代議員さえも連載する必要があります。 [Hangfire](http://hangfire.io/)は、あなたがしようとしていることを行い、アセンブリ情報、クラス名、メソッド名、および引数をシリアル化することによってこれを実現します。 – Rob