You are viewing the documentation for Blueriq 17. Documentation for other versions is available in our documentation directory.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

This page applies to you if you are interested in creating a custom implementation for consuming Aggregate events from the Customerdata service queue. (Example is Java with Spring)

This feature is available from Customerdata Service version 2.0.0 and up.

How to attach a custom consumer to the queue

To create a custom consumer of the queue we need a running spring application which has a connection to the queue. 

Dependencies

Create a Spring application which has the following dependencies:

pom.xml
...
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-stream-dependencies</artifactId>
				<version>Chelsea.SR2</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-stream</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
	</dependencies>
...

Properties

Set the following settings in application.properties to create a connection to the queue. In this example username/password guest is used, you can create an other user. For more information, please check Security.

spring.cloud.stream.bindings.input.destination = CustomerDataService
spring.cloud.stream.bindings.input.group = CustomerDataService
spring.cloud.stream.bindings.input.binder = rabbit1

spring.cloud.stream.binders.rabbit1.type = rabbit
spring.cloud.stream.binders.rabbit1.environment.spring.rabbitmq.host = localhost
spring.cloud.stream.binders.rabbit1.environment.spring.port = 15672
spring.cloud.stream.binders.rabbit1.environment.spring.username = guest
spring.cloud.stream.binders.rabbit1.environment.spring.password = guest

Code

The following piece of example code will consume all events on the queue and print the payload (see function loggerSink)

@SpringBootApplication
@EnableBinding(Sink.class)
@EnableAutoConfiguration
public class RabbitConsumerApplication {

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

  @StreamListener(Sink.INPUT)
  public void loggerSink(String payload) {
    System.out.println("Received: " + payload);
  }
}


Test if it works

Now you got a consumer connected to the queue, we need to test if it all works as expected.  
Do the following to test if it all works

  • Start the Spring application.
  • Open the RabbitMQ management interface and navigate to the CustomerDataService queue that was previously created.
  • On this page, a message can be created and put on the queue which, if all is configured well, should be picked up by the spring application. Enter the following:
  • Press 'Publish message' and check the log of the application, the message should be printed.

  • No labels