Есть простой проект Spring-Cloud-Stream, который я пытаюсь подключить к RabbitMQ, он говорит, что его подключен < / a> но это не работает. Я что-то не так сделал в коде?

< Сильный > Application.properties

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

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();
}

ProducerController

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) в основном классе, который запускает приложение.

0
Kyle Van Raay 18 Апр 2020 в 20:57

1 ответ

Лучший ответ

Чтобы настроить весенний облачный поток с реализацией связывателя rabbitmq, вам необходимо настроить это в своем 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

  1. EnableBinding(HelloBinding.class)
  2. Внедрить привязку и использовать ее
helloBinding.greeting().send(MessageBuilder
                .withPayload(...)
                .build());
  1. Настройка свойств rabbitMQ
0
CodeScale 19 Апр 2020 в 07:01