我从Producer项目向Consumer项目发送了一条消息。然后,当我收到第一条消息时,我想从Consumer项目向Producer项目发送一条不同的消息。我使用下面的代码来完成此操作。
public class CommandMessageConsumer : IConsumer<CommandMessage>
{
public async Task Consume(ConsumeContext<CommandMessage> context)
{
// I'm getting the message Consumer -> Consumer
var message = context.Message;
await Console.Out.WriteLineAsync($"Message from Producer : {message.MessageString}");
// I'm sending the message Consumer -> Consumer
_ = context.Publish(new CommandMessage(message.Id, message.MessageString));
}
}
我收到了消费者-〉生产者的消息,但问题是它继续发送,并没有在控制台上停止。这意味着无限!
此外,Producer服务部分:
public class PCommandMessageConsumer : IConsumer<CommandMessage>
{
public async Task Consume(ConsumeContext<CommandMessage> context)
{
var message = context.Message;
await Console.Out.WriteLineAsync($"------------------Message from Consumer to Producer : {message.MessageString}");
}
}
1条答案
按热度按时间z5btuh9x1#
这个问题是由于设置不同的ReceiveEndpoint队列名称引起的。使它们相同(在我的例子中是“samplqueue”)修复了无限循环。我猜使它们不同的队列名称阻止了确认,这导致了发送循环,直到获得接收的确认。