我是RabbitMQ整合的初學者。我正在做一些RabbitMq的實驗,並將其作爲任務執行者。Rabbit Mq作爲Task Runner
對於如: 讓說我有一個類任務,其中有)
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.");
}
這裏我們必須把消息傳遞給消費者。
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();
}
其接受字符串消息。有沒有辦法,我可以通過我的函數調用生產者或兔子MQ隊列,讓消費者執行這些隊列中的函數調用。
我嘗試通過序列化/反序列化對象,然後使用反射來調用消費者代碼中的方法..我正在尋找一些替代解決方案,通過使用委託或什麼。任何幫助將不勝感激。
沒有序列化沒有辦法做到,沒有。即使代表也需要序列化。 [Hangfire](http://hangfire.io/)做你想做的事情,通過序列化程序集信息,類名,方法名和參數來實現。 – Rob