Подключение к служебной шине Azure с помощью Spring-cloud-azure-starter-servicebus-jms
Я пытаюсь следовать документации Microsoft по подключению к служебной шине Azure с помощью Spring-cloud-azure-starter-servicebus-jms.
Ссылка , но не повезло.
POM-файл:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.4</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.demo</groupId>
<artifactId>demo</artifactId>
<version>0.0.3-SNAPSHOT</version>
<name>springcloud-servicebus-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>4.6.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Java-код
package com.example.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsTemplate;
@SpringBootApplication
@EnableJms
public class Sample implements CommandLineRunner {
private static final Logger LOGGER = LoggerFactory.getLogger(Sample.class);
private static final String TOPIC_NAME = "loan-app";
private static final String SUBSCRIPTION_NAME = "loan-app-sub";
@Autowired
private JmsTemplate jmsTemplate;
public static void main(String[] args) {
SpringApplication.run(Sample.class, args);
}
@Override
public void run(String... args) {
LOGGER.info("Sending message");
jmsTemplate.convertAndSend(TOPIC_NAME, "Hello Word");
}
@JmsListener(destination = TOPIC_NAME, containerFactory = "topicJmsListenerContainerFactory", subscription = SUBSCRIPTION_NAME)
public void receiveMessage(String message) {
LOGGER.info("Message received: {}", message);
}
}
Ошибка :
ПРИЛОЖЕНИЕ НЕ ЗАПУСТИЛОСЬ
Описание:
Поле jmsTemplate в com.example.demo.Sample требовало bean-компонента типа org.springframework.jms.core.JmsTemplate, который не удалось найти.
Точка внедрения имеет следующие аннотации: — @org.springframework.beans.factory.annotation.Autowired(required=true)
1 ответ
Сопоставление версий Spring Cloud Azure и Spring Boot показывает, что:
-
Spring Cloud Azure 4.x
совместим сSpring Boot 2.x
. -
Spring Cloud Azure 5.x
совместим сSpring Boot 3.x
.
Теперь вы используетеSpring Boot 3.0.4
сSpring Cloud Azure 4.6.0
. Они не совместимы. У вас есть 2 варианта:
- Вариант 1: Изменить
spring-boot-starter-parent
версия от3.0.4
к2.7.8
. - Вариант 2: Изменить
spring-cloud-azure-dependencies
' версия из4.6.0
к5.0.0
.