首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RabbitMQ,EasyNetQ和NodeJS?

RabbitMQ,EasyNetQ和NodeJS?
EN

Stack Overflow用户
提问于 2014-05-08 00:47:54
回答 1查看 720关注 0票数 0

我试着了解什么是合理的整合这些技术。如何将NodeJS (目前正在使用amqplib,但可以更改)跨RabbitMQ集成到EasyNetQ?

我认为它可以工作,但EasyNetQ需要一个对象(我认为),而且Node/amqplib只能发送字符串。

C#代码:

代码语言:javascript
复制
Bus.Subscribe<BusManifestHolla>(HollaID,
    msg => {
        Console.WriteLine("Received Manifest Holla ID {0}", msg.ManifestID.ToString());
        Console.WriteLine("Responding with Manifest Yo ID {0}", YoID_1);
        Bus.Publish(new BusManifestYo { ManifestID = msg.ManifestID, ServiceName = YoID_1 });
    }
);

NodeJS代码:

代码语言:javascript
复制
var b = new Buffer(JSON.stringify(new dto.BusManifestHolla(uuid.v4())));
ch.publish(Play.exchangeName, '#', b);

结果:

代码语言:javascript
复制
DEBUG: HandleBasicDeliver on consumer: a60b7760-e22f-4685-9f65-039bef19f58c, deliveryTag: 1
DEBUG: Recieved
    RoutingKey: '#'
    CorrelationId: ''
    ConsumerTag: 'a60b7760-e22f-4685-9f65-039bef19f58c'
    DeliveryTag: 1
    Redelivered: False
ERROR: Exception thrown by subscription callback.
    Exchange:    'RabbitMon.BusManifestHolla:RabbitMon'
    Routing Key: '#'
    Redelivered: 'False'
Message:
{"Guid":"a6cf174d-9b77-4558-bbda-efe9d8451dff"}
BasicProperties:
ContentType=NULL, ContentEncoding=NULL, Headers=[], DeliveryMode=0, Priority=0,    CorrelationId=NULL, ReplyTo=NULL, Expiration=NULL, MessageId=NULL, Timestamp=0, Type=NULL, UserId=NULL, AppId=NULL, ClusterId=
Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at EasyNetQ.TypeNameSerializer.DeSerialize(String typeName)
   at EasyNetQ.RabbitAdvancedBus.<>c__DisplayClass16.<Consume>b__15(Byte[] body, MessageProperties properties, MessageReceivedInfo messageRecievedInfo)
   at EasyNetQ.Consumer.HandlerRunner.InvokeUserMessageHandler(ConsumerExecutionContext context)

难道没有办法把一个物体送过公共汽车吗?你是怎么把这两者结合起来的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 08:10:18

它在TypeNameSerializer.DeSerialize电话上失败了。在节点代码中,您需要使用EasyNetQ在另一端应该期望的类型填充EasyNetQ。这需要是一个完全限定的名称,包括程序集名称。只需查看EasyNetQ给您的BusManifestHolla队列指定的名称,减去HollaID值(和下划线)即可。

诚然,错误信息不是很有帮助。可能会有改进的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23530883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档