无法将RabbitMQ RPC与ServiceStack分布式服务一起使用。

斯蒂芬·帕滕

对于我来说,我一直无法通过RabbitMQ与临时回复队列一起使用RPC。下面是从该测试派生的简单示例我在输出窗口中看到一堆异常,并且dlq填满,但是消息从未被确认。

namespace ConsoleApplication4
{
   class Program
   {
       public static IMessageService CreateMqServer(int retryCount = 1)
       {
           return new RabbitMqServer { RetryCount = retryCount };
       }

       static void Main(string[] args)
       {

           using (var mqServer = CreateMqServer())
           {
               mqServer.RegisterHandler<HelloIntro>(m =>
                   new HelloIntroResponse { Result = "Hello, {0}!".Fmt(m.GetBody().Name) });
               mqServer.Start();
           }

           Console.WriteLine("ConsoleAppplication4");
           Console.ReadKey();
       }
   }
}



namespace ConsoleApplication5
{
   class Program
   {
       public static IMessageService CreateMqServer(int retryCount = 1)
       {
           return new RabbitMqServer { RetryCount = retryCount };
       }

       static void Main(string[] args)
       {
           using (var mqServer = CreateMqServer())
           {
               using (var mqClient = mqServer.CreateMessageQueueClient())
               {
                   var replyToMq = mqClient.GetTempQueueName();
                   mqClient.Publish(new Message<HelloIntro>(new HelloIntro { Name = "World" })
                   {
                       ReplyTo = replyToMq
                   });

                   IMessage<HelloIntroResponse> responseMsg = mqClient.Get<HelloIntroResponse>(replyToMq);
                   mqClient.Ack(responseMsg);

               }
           }

           Console.WriteLine("ConsoleAppplication5");
           Console.ReadKey();
       }
   }
}

第一个例外

  RabbitMQ.Client.Exceptions.OperationInterruptedException occurred
    _HResult=-2146233088
    _message=The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=405, text="RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'mq:tmp:10dd20804ee546d6bf5a3512f66143ec' in vhost '/'", classId=50, methodId=20, cause=
    HResult=-2146233088
    IsTransient=false
    Message=The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=405, text="RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'mq:tmp:10dd20804ee546d6bf5a3512f66143ec' in vhost '/'", classId=50, methodId=20, cause=
    Source=RabbitMQ.Client
    StackTrace:
         at RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply()
         at RabbitMQ.Client.Impl.ModelBase.ModelRpc(MethodBase method, ContentHeaderBase header, Byte[] body)
         at RabbitMQ.Client.Framing.Impl.v0_9_1.Model._Private_QueueBind(String queue, String exchange, String routingKey, Boolean nowait, IDictionary`2 arguments)
         at RabbitMQ.Client.Impl.ModelBase.QueueBind(String queue, String exchange, String routingKey, IDictionary`2 arguments)
         at RabbitMQ.Client.Impl.ModelBase.QueueBind(String queue, String exchange, String routingKey)
         at ServiceStack.RabbitMq.RabbitMqExtensions.RegisterQueue(IModel channel, String queueName)
         at ServiceStack.RabbitMq.RabbitMqExtensions.RegisterQueueByName(IModel channel, String queueName)
         at ServiceStack.RabbitMq.RabbitMqProducer.PublishMessage(String exchange, String routingKey, IBasicProperties basicProperties, Byte[] body)
    InnerException:

其次是这个

  System.Threading.ThreadInterruptedException occurred
    _HResult=-2146233063
    _message=Thread was interrupted from a waiting state.
    HResult=-2146233063
    IsTransient=true
    Message=Thread was interrupted from a waiting state.
    Source=mscorlib
    StackTrace:
         at System.Threading.Monitor.ObjWait(Boolean exitContext, Int32 millisecondsTimeout, Object obj)
         at System.Threading.Monitor.Wait(Object obj, Int32 millisecondsTimeout, Boolean exitContext)
    InnerException: 

然后重复多次并挂起。这篇特别的文章似乎暗示他们可以使用ServerStack和RabbitMQ RPC取得某种成功,但是在我开始更改代码之前,我想知道我的代码不起作用的原因。

谢谢斯蒂芬

神话

重新声明排他队列存在一个问题,此提交不再执行此操作

还有一个新的RabbitMqTest项目,展示了一个简单的工作客户端/服务器示例,该示例通过2个独立的控制台应用程序进行通信。

此更改从MyGet的v4.0.34 +版本开始可用

ServiceStack.RabbitMqRabbitMq.Client的NuGet依赖也已升级到v3.4.0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Google Apps脚本的Web App无法与分布式URL一起使用

来自分类Dev

将flyway与分布式源代码管理(例如,Git,Mercurial等)一起使用

来自分类Dev

将flyway与分布式源代码管理(例如,Git,Mercurial等)一起使用

来自分类Dev

在分布式环境中是否可以将RMI与循环负载均衡器一起使用?

来自分类Dev

Rabbitmq无法与Java一起使用

来自分类Dev

如何将Bugzilla的网络服务xml-rpc与python一起使用?

来自分类Dev

Servicestack-将类似服务分组在一起

来自分类Dev

将Flask XML-RPC与HTTPAuth一起使用?

来自分类Dev

将ServiceStack Redis与Twemproxy一起使用

来自分类Dev

将ServiceStack Ormlite与表值函数一起使用

来自分类Dev

将RabbitMQ与Ionic应用程序一起使用

来自分类Dev

将RabbitMQ与Logstash一起使用时丢失消息

来自分类Dev

如何设置弹性节点APM分布式跟踪以与Kafka和多个节点服务一起使用?

来自分类Dev

无法在分布式Tensorflow中使用Tensorboard

来自分类Dev

使用分布式事务时无法调用提交

来自分类Dev

无法在分布式Tensorflow中使用Tensorboard

来自分类Dev

Servicestack-将类似的服务分组在一起

来自分类Dev

将Guice与嵌入式Tomcat一起使用?

来自分类Dev

使用WAS将Autofac与WCF服务一起使用

来自分类Dev

$ q.defer()无法与Angular服务一起使用

来自分类Dev

CoreBluetooth:scanForPeripheralsWithServices无法与服务数组一起使用

来自分类Dev

gitolite无法与sshd服务一起使用

来自分类Dev

CSS字形无法与MaxCDN或缓存服务一起使用

来自分类Dev

CoreBluetooth:scanForPeripheralsWithServices无法与服务数组一起使用

来自分类Dev

无法将Celery服务器连接到本地主机上的RabbitMQ

来自分类Dev

将Specflow与Web服务一起使用

来自分类Dev

将OAuth 2.0与Exchange Web服务一起使用

来自分类Dev

将C#服务参考与代理一起使用

来自分类Dev

将Systemd用户服务与ecryptfs一起使用

Related 相关文章

  1. 1

    使用Google Apps脚本的Web App无法与分布式URL一起使用

  2. 2

    将flyway与分布式源代码管理(例如,Git,Mercurial等)一起使用

  3. 3

    将flyway与分布式源代码管理(例如,Git,Mercurial等)一起使用

  4. 4

    在分布式环境中是否可以将RMI与循环负载均衡器一起使用?

  5. 5

    Rabbitmq无法与Java一起使用

  6. 6

    如何将Bugzilla的网络服务xml-rpc与python一起使用?

  7. 7

    Servicestack-将类似服务分组在一起

  8. 8

    将Flask XML-RPC与HTTPAuth一起使用?

  9. 9

    将ServiceStack Redis与Twemproxy一起使用

  10. 10

    将ServiceStack Ormlite与表值函数一起使用

  11. 11

    将RabbitMQ与Ionic应用程序一起使用

  12. 12

    将RabbitMQ与Logstash一起使用时丢失消息

  13. 13

    如何设置弹性节点APM分布式跟踪以与Kafka和多个节点服务一起使用?

  14. 14

    无法在分布式Tensorflow中使用Tensorboard

  15. 15

    使用分布式事务时无法调用提交

  16. 16

    无法在分布式Tensorflow中使用Tensorboard

  17. 17

    Servicestack-将类似的服务分组在一起

  18. 18

    将Guice与嵌入式Tomcat一起使用?

  19. 19

    使用WAS将Autofac与WCF服务一起使用

  20. 20

    $ q.defer()无法与Angular服务一起使用

  21. 21

    CoreBluetooth:scanForPeripheralsWithServices无法与服务数组一起使用

  22. 22

    gitolite无法与sshd服务一起使用

  23. 23

    CSS字形无法与MaxCDN或缓存服务一起使用

  24. 24

    CoreBluetooth:scanForPeripheralsWithServices无法与服务数组一起使用

  25. 25

    无法将Celery服务器连接到本地主机上的RabbitMQ

  26. 26

    将Specflow与Web服务一起使用

  27. 27

    将OAuth 2.0与Exchange Web服务一起使用

  28. 28

    将C#服务参考与代理一起使用

  29. 29

    将Systemd用户服务与ecryptfs一起使用

热门标签

归档