阻止控制台应用程序排队回调请求

问题描述

有没有一种方法不使回调消息排队?我有两个.Net Core控制台应用程序,并且正在使用RabbitMQ作为传输使用NServiceBus发送回调。一切正常,当我按下按钮时,发件人发送回叫等待响应。

但是,由于某种原因,如果我按下两次发送消息的按钮,消息就以某种方式“排队”,并且在行(callback => response,callback => response)中得到2个回调和响应。有没有一种方法可以使这些回调不排队?

以下是一些摘要

Sender

while (true)  // Running a loop and simulating input with the console
{
  var key = Console.ReadKey();
  Console.WriteLine();

  switch (key.Key)
    {
      case ConsoleKey.D1: 

        var urMessage = new UricaRequestMessage
        {
        }

        var sendOptions = new SendOptions();
        sendOptions.SetDestination("Urica");  // The namespace where UricaRequestMessageHandler lives

        log.Info($"Sending a request to Urica");
        
        // Callback sent from here
        var response = await endpointInstance.Request<int>(urMessage,sendOptions)  
                             .ConfigureAwait(false);                           

        log.Info($"Callback recieved from Urica with response: {response}");

        break;

      case ConsoleKey.Q:
        return;
      
      default:
        log.Info("UnkNown key. Please try again");
        break;
   }
}

MessageHandler

public Task Handle(UricaRequestMessage message,IMessageHandlerContext context)
{
  // Recieved a message,starting to do some things

  Thread.Sleep(2000); // Doing stuff,calculating,speculating...

  //  Returning result
  return context.reply(4);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...