当我尝试以此格式推送主题时 / 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);
任何想法如何保持斜杠/并在主题下有子主题。
答案 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。
因此路由密钥中未授权“/”,并且使用的分隔符是一个点。