EasyNetQ中使用自定义的ISerializer

         最近在使用EasyNetQ时,遇到一个问题:c++项目组发送的消息数据不是Json数据,而是自定义的数据格式(各字段+‘|’连接成一个字符串),EasyNetQ中消费消息接收的都是强类型,没办法直接消费一个字符串作为一个消息。没办法只好研究EasyNetQ的源码,发现有一个ISerializer接口,只要实现一个自定义的Serializer并注入即可。

 

public class GameLogSerializer : ISerializer
    {
        public T BytesToMessage<T>(byte[] bytes)
        {
            //实现自定义的反序列化代码
        }

        public object BytesToMessage(Type type, byte[] bytes)
        {
            //实现自定义的反序列化代码
        }

        public byte[] MessageToBytes<T>(T message) where T : class
        {
            //实现自定义的序列化代码
        }
    }

            使用Bus的时候注入序列化器:

var bus = RabbitHutch.CreateBus("host", serviceRegister => serviceRegister.Register<ISerializer, GameLogSerializer>());

 

posted @ 2018-07-04 12:03  focus-lei  阅读(612)  评论(0编辑  收藏  举报