0

これらのテクノロジーを統合するために何が合理的かを理解しようとしています。NodeJS (現在は amqplib を使用していますが、これは変更される可能性があります) を RabbitMQ から EasyNetQ に統合するにはどうすればよいですか?

EasyNetQがオブジェクトを期待していること(私は思う)とNode / amqplibが文字列しか送信できないことを除いて、私はそれをある程度機能させています。

C# コード:

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 コード:

var b = new Buffer(JSON.stringify(new dto.BusManifestHolla(uuid.v4())));
ch.publish(Play.exchangeName, '#', b);

結果:

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)

バスを介してオブジェクトを送信する方法はありませんか? この2つをどのように統合しますか?

4

1 に答える 1

2

TypeNameSerializer.DeSerialize 呼び出しで失敗しています。ノード コードでは、BasicProperties.Type に、EasyNetQ が相手側で期待するタイプを設定する必要があります。これは、アセンブリ名を含む完全修飾名である必要があります。EasyNetQ が BusManifestHolla キューに付けた名前から HollaID 値 (およびアンダースコア) を引いたものを見てください。

確かに、このエラー メッセージはあまり役に立ちません。おそらく改善される可能性があります。

于 2014-05-08T08:10:18.280 に答える