小智 6
RabbitMQ 与消息的类型/内容无关,因此您可以轻松地将非常不同类型的数据发布到单个队列。您的应用程序必须处理解析。为此,我将提出两种解决方案:
消息头
您可以使用消息标头添加有关消息类型的附加信息。
Dictionary<string, object> headers = new Dictionary<string, object>();
headers("type", "type1");
IBasicProperties basicProperties = model.CreateBasicProperties();
basicProperties.Headers = headers;
byte[] messageBytes = Encoding.UTF8.GetBytes(message);
model.BasicPublish(_headersExchange, "", basicProperties, messageBytes);
Run Code Online (Sandbox Code Playgroud)
由于它使用消息标头,因此您以后始终可以使用标头交换将它们路由到不同的队列,因此这是下一种方法的一个好处。
要在收到消息后使用标题,您可以使用以下内容:
deliveryArguments.BasicProperties.Headers[headerKey]
Run Code Online (Sandbox Code Playgroud)
在消息正文中编码消息类型
您还可以定义自己的消息格式,或添加描述数据类型的附加字段。但是这个实现高度依赖于你当前的消息格式,所以我认为举个例子没有意义。