SpringCloud 添加消息處理程序,構建并運行

2023-11-24 14:52 更新

修改com.example.loggingconsumer.LoggingConsumerApplication類,如下所示:

@SpringBootApplication
@EnableBinding(Sink.class)
public class LoggingConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(LoggingConsumerApplication.class, args);
	}

	@StreamListener(Sink.INPUT)
	public void handle(Person person) {
		System.out.println("Received: " + person);
	}

	public static class Person {
		private String name;
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String toString() {
			return this.name;
		}
	}
}

從前面的清單中可以看到:

  • 我們已經(jīng)使用@EnableBinding(Sink.class)啟用了Sink綁定(輸入無輸出)。這樣做會向框架發(fā)出信號,以啟動對消息傳遞中間件的綁定,在該消息傳遞中間件自動創(chuàng)建綁定到Sink.INPUT通道的目的地(即隊列,主題和其他)。
  • 我們添加了一個handler方法來接收類型為Person的傳入消息。這樣做可以使您看到框架的核心功能之一:它嘗試自動將傳入的消息有效負載轉換為類型Person

您現(xiàn)在有了一個功能齊全的Spring Cloud Stream應用程序,該應用程序確實偵聽消息。為了簡單起見,我們從這里開始,假設您在第一步中選擇了RabbitMQ 。假設已經(jīng)安裝并運行了RabbitMQ,則可以通過在IDE中運行其main方法來啟動應用程序。

您應該看到以下輸出:

	--- [ main] c.s.b.r.p.RabbitExchangeQueueProvisioner : declaring queue for inbound: input.anonymous.CbMIwdkJSBO1ZoPDOtHtCg, bound to: input
	--- [ main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [localhost:5672]
	--- [ main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#2a3a299:0/SimpleConnection@66c83fc8. . .
	. . .
	--- [ main] o.s.i.a.i.AmqpInboundChannelAdapter      : started inbound.input.anonymous.CbMIwdkJSBO1ZoPDOtHtCg
	. . .
	--- [ main] c.e.l.LoggingConsumerApplication         : Started LoggingConsumerApplication in 2.531 seconds (JVM running for 2.897)

轉到RabbitMQ管理控制臺或任何其他RabbitMQ客戶端,然后向input.anonymous.CbMIwdkJSBO1ZoPDOtHtCg發(fā)送消息。anonymous.CbMIwdkJSBO1ZoPDOtHtCg部分代表組名并已生成,因此在您的環(huán)境中它一定是不同的。對于更可預測的內容,可以通過設置spring.cloud.stream.bindings.input.group=hello(或您喜歡的任何名稱)來使用顯式組名。

消息的內容應為Person類的JSON表示形式,如下所示:

{"name":"Sam Spade"}

然后,在控制臺中,您應該看到:

Received: Sam Spade

您還可以將應用程序生成并打包到引導jar中(使用./mvnw clean install),并使用java -jar命令運行生成的JAR。

現(xiàn)在,您有了一個正在運行的(盡管非常基礎的)Spring Cloud Stream應用程序。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號