RabbitMQ主题格式 - 主题下的子主题

时间:2017-04-19 12:19:18

标签: rabbitmq spring-websocket spring-rabbit

当我尝试以此格式推送主题时 / topic / pushing / {organizationId} 我收到错误

messagingTemplate.convertAndSend("/topic/pushing/" + obj.getCustomerid(), obj);

错误:

  

15:06:48.901 [reactor-tcp-io-1]错误   o.s.m.s.s.StompBrokerRelayMessageHandler - 收到错误   {message = [目的地无效],content-type = [text / plain],   version = [1.0,1.1,1.2],content-length = [53]} session = system   text / plain payload =' / pushing / 2963_ent'不是一个有效的主题   目的地

但是当我将其更改为 / topic / pushing。{organizationId} 格式时,用斜线替换斜线,它可以正常工作:

messagingTemplate.convertAndSend("/topic/pushing." + obj.getCustomerid(), obj);

任何想法如何保持斜杠/并在主题下有子主题。

1 个答案:

答案 0 :(得分:2)

AMQP 0.9.1 specification有关主题交换的说法:

  

主题交换类型的工作方式如下:   1.消息队列使用路由模式P绑定到交换机。   2.发布者向交换机发送带有路由密钥R的消息。   3.如果R匹配P,则消息被传递到消息队列。用于主题交换的路由密钥必须由零或更多组成   由点分隔的单词。每个单词可以包含字母A-Z和a-z   和数字0-9。

     

路由模式遵循与路由密钥相同的规则   另外*匹配单个单词,#匹配零个或多个   话。因此路由模式* .stock。#匹配路由密钥   usd.stock和eur.stock.db但不是stock.nasdaq。

因此路由密钥中未授权“/”,并且使用的分隔符是一个点。