У меня есть несколько сценариев обмена сообщениями. Мне нужна помощь с использованием RabbitMQ 2.1.0 в С#... 1) Я хотел бы, чтобы подписчик слушал "сырую" очередь; затем выполните некоторую предварительную обработку и опубликуйте новое сообщение, например, «предварительно обработанное» на том же обмене. 2) аналогично 1, но публикуется на другой бирже
Я заметил в руководстве пользователя клиента .Net, что в нем говорится не вызывать .basicPublish во время обратного вызова, поскольку он блокирует потоки.
using (IConnection conn = connectionFactory.CreateConnection())
{
using (IModel model = conn.CreateModel())
{
var sub = new Subscription(model, "rtls");
foreach (BasicDeliverEventArgs iter in sub)
{
var message = System.Text.Encoding.UTF8.GetString(iter.Body);
//do stuff and build up a new message
//possibly create a new connection?
// ***.BasicPublish(new message);
sub.Ack(iter);
}
}
}
Я хотел бы успешно обработать и опубликовать новое сообщение, прежде чем отправить ack() в исходное сообщение; именно поэтому я уверен, что каждое сообщение обрабатывается.
Это правильный способ обработки или это вызовет проблемы с потоками?
Спасибо за помощь!