Skip to content

Commit 0ff9d41

Browse files
authored
migrate rabbitmq to service bus (Azure-Samples#18)
1 parent eb2f93f commit 0ff9d41

File tree

4 files changed

+49
-15
lines changed

4 files changed

+49
-15
lines changed

rabbitmq-custom-formula-source/pom.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,25 @@
1616
<properties>
1717
<java.version>17</java.version>
1818
</properties>
19+
<dependencyManagement>
20+
<dependencies>
21+
<dependency>
22+
<groupId>com.azure.spring</groupId>
23+
<artifactId>spring-cloud-azure-dependencies</artifactId>
24+
<version>5.22.0</version>
25+
<type>pom</type>
26+
<scope>import</scope>
27+
</dependency>
28+
</dependencies>
29+
</dependencyManagement>
1930
<dependencies>
2031
<dependency>
21-
<groupId>org.springframework.boot</groupId>
22-
<artifactId>spring-boot-starter-amqp</artifactId>
32+
<groupId>com.azure.spring</groupId>
33+
<artifactId>spring-cloud-azure-starter</artifactId>
34+
</dependency>
35+
<dependency>
36+
<groupId>com.azure.spring</groupId>
37+
<artifactId>spring-messaging-azure-servicebus</artifactId>
2338
</dependency>
2439

2540
<dependency>

rabbitmq-custom-formula-source/src/main/java/com/example/messagingrabbitmq/MessagingRabbitmqApplication.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package com.example.messagingrabbitmq;
22

3+
import com.azure.core.credential.TokenCredential;
4+
import com.azure.core.exception.ResourceNotFoundException;
5+
import com.azure.messaging.servicebus.administration.ServiceBusAdministrationClient;
6+
import com.azure.messaging.servicebus.administration.ServiceBusAdministrationClientBuilder;
7+
import com.azure.messaging.servicebus.administration.models.QueueProperties;
8+
import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties;
39
import org.springframework.boot.SpringApplication;
410
import org.springframework.boot.autoconfigure.SpringBootApplication;
511
import org.springframework.context.ConfigurableApplicationContext;
612
import org.springframework.context.annotation.Bean;
7-
import org.springframework.amqp.core.Queue;
813

914
@SpringBootApplication
1015
public class MessagingRabbitmqApplication {
@@ -18,8 +23,21 @@ public static void main(String[] args) throws InterruptedException {
1823
}
1924

2025
@Bean
21-
public Queue queue() {
22-
return new Queue(queueName, true);
26+
ServiceBusAdministrationClient serviceBusAdministrationClient(
27+
AzureServiceBusProperties properties,
28+
TokenCredential credential) {
29+
return new ServiceBusAdministrationClientBuilder()
30+
.credential(properties.getFullyQualifiedNamespace(), credential)
31+
.buildClient();
32+
}
33+
34+
@Bean
35+
QueueProperties queue(ServiceBusAdministrationClient adminClient) {
36+
try {
37+
return adminClient.getQueue(queueName);
38+
} catch (ResourceNotFoundException e) {
39+
return adminClient.createQueue(queueName);
40+
}
2341
}
2442

2543
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package com.example.messagingrabbitmq;
22

3-
import org.springframework.amqp.core.Message;
3+
import org.springframework.messaging.Message;
44
import org.springframework.stereotype.Component;
5-
import org.springframework.amqp.rabbit.core.RabbitTemplate;
5+
import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate;
6+
import org.springframework.messaging.support.MessageBuilder;
67
import org.springframework.beans.factory.annotation.Autowired;
78

89
@Component
910
public class Producer {
1011

1112
@Autowired
12-
private final RabbitTemplate rabbitTemplate;
13+
private final ServiceBusTemplate serviceBusTemplate;
1314

14-
public Producer(RabbitTemplate rabbitTemplate) {
15-
this.rabbitTemplate = rabbitTemplate;
15+
public Producer(ServiceBusTemplate serviceBusTemplate) {
16+
this.serviceBusTemplate = serviceBusTemplate;
1617
}
1718

1819
public void run() {
1920
for (int i = 0; i < 10; i++) {
2021
System.out.println("Sending message..." + i);
2122
String responseString = "test " + i;
22-
rabbitTemplate.convertAndSend(MessagingRabbitmqApplication.queueName, new Message(responseString.getBytes()));
23+
serviceBusTemplate.send(MessagingRabbitmqApplication.queueName, MessageBuilder.withPayload(responseString).build());
2324
}
2425
}
2526
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
spring.rabbitmq.password=secret
2-
spring.rabbitmq.username=myuser
3-
spring.rabbitmq.host=localhost
4-
spring.rabbitmq.port=5671
1+
spring.cloud.azure.servicebus.entity-type=queue
2+
spring.cloud.azure.servicebus.namespace=
3+
spring.cloud.azure.credential.managed-identity-enabled= true
4+
spring.cloud.azure.credential.client-id=

0 commit comments

Comments
 (0)