gpt4 book ai didi

java - Spring Cloud Stream 与 RabbitMQ 的连接

转载 作者:行者123 更新时间:2023-12-01 17:20:47 25 4
gpt4 key购买 nike

有一个简单的 Spring-Cloud-Stream 项目,我尝试将其与 RabbitMQ 连接,它说它 connected但它不起作用。我在代码中做错了什么吗?

应用程序属性

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.cloud.stream.bindings.greetingChannel.destination = greetings
server.port=8080

HelloBinding接口(interface)

package com.gateway.cloudstreamproducerrabbitmq;

import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;

public interface HelloBinding {

@Output("greetingChannel")
MessageChannel greeting();
}

生产者 Controller

package com.gateway.cloudstreamproducerrabbitmq;

import com.gateway.cloudstreamproducerrabbitmq.HelloBinding;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProducerController {

private MessageChannel greet;

public ProducerController(HelloBinding binding) {
greet = binding.greeting();
}

@GetMapping("/greet/{name}")
public void publish(@PathVariable String name) {
String greeting = "Hello, " + name + "!";
Message<String> msg = MessageBuilder.withPayload(greeting)
.build();
this.greet.send(msg);
}
}

最后,我在启动应用程序的主类中有一个@EnableBinding(HelloBinding.class)

最佳答案

要使用rabbitmq binder实现设置Spring Cloud Stream,您需要在pom.xml中进行配置1.

 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

然后在 application.properties/yaml 中定义它

2.

spring:
cloud:
stream:
bindings:
greetingChannel
destination: test.greeting
group: queue
rabbit:
bindings:
greetingChannel:
producer:
transacted: true //optional

  • EnableBinding(HelloBinding.class)
  • 注入(inject)绑定(bind)并使用它
  • helloBinding.greeting().send(MessageBuilder
    .withPayload(...)
    .build());
  • rabbitMQ 属性设置
  • 关于java - Spring Cloud Stream 与 RabbitMQ 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61293786/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com