2017-10-06 66 views

回答

0

在一個服務中,您將發送該消息,並在另一個服務中接收它。在這個例子中,你現在有兩個項目。在發送服務中,您有RabbitTemplate,而在其他服務中,Receiver使用SimpleMessageListenerContainer和MessageListenerAdapter bean。確保綁定,隊列和交換配置相同,並且服務都連接到相同的RabbitMQ服務器。

+1

非常感謝,它按預期工作。只需一次確認,在發送服務中,我沒有爲RabbitTemplate指定任何配置。我只在application.properties文件中指定了rabbitmq連接參數。 Spring Boot是否會自動創建帶有這些連接參數的RabbitTemplate bean?請確認。 – Krish

+0

正確。您瞭解啓動魔術正確:https://docs.spring.io/spring-boot/docs/1.5.7.RELEASE/reference/htmlsingle/#boot-features-amqp,並查看默認的「RabbitProperties」:https: //github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfiguration/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java –

+0

@ArtemBilan感謝您的確認... – Krish

1

你需要的是這樣的事情(數字從我最近,這也說明blog post採取更詳細的代碼示例):

Event producer and consumers are loosely coupled since an exchange serves as intermediary.

  • 在這裏,作爲一個例子,CRUD事件像「customer.created」或「order.deleted」被認爲是
  • 任何微服務都可以充當Event Producer並通過RabbitTemplate發送事件給事件交換,這是由Spring AMQP提供的,並且可以被注入任何Spring Bean 。
  • 同一個微服務的一組實例共享一個隊列。
  • 消費微服務通過聲明@Bean s來表示QueueBinding具有相同屬性,從而聲明它們的隊列以及隊列和事件交換之間的綁定。
  • 哪些事件將被各微服務簇
  • 所有微服務必須共享相同的事件交換通過聲明Exchange類型的@Bean具有相同名稱交換被接收的綁定定義。
+0

精美地解釋。謝謝。 如何處理多個交換,多個隊列中的服務? – Krish

+0

你只需聲明多個'Queue'和潛在的'Exchange',並用多個'Binding'將它們連接在一起 – Tom