0

Java configuration to connect to IBM MQ using spring integration

Sagar Shetty
  • 165
  • 2
  • 5

1 Answers1

0

Please use the below code to create a Inbound messsage driven channel adapter using java configuration.

@Value("${jms.queuemanagername}")
private String queuemanagername;

@Value("${jms.hostName}")
private String hostName;

@Value("${jms.port}")
private String port;

@Value("${jms.channel}")
private String channel;

@Value("${jms.queueName}")
private String queueName;

@Autowired
public AmqpTemplate amqpTemplate;

@Bean
public MessageChannel queureader() {
    return new DirectChannel();
}

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


@Bean
public IntegrationFlow ibmInbound() {
    return IntegrationFlows.from(Jms.messageDrivenChannelAdapter(getConnection()).destination(reciverBean()))
             .channel("queureader")
             .get();
}

@Bean
public MQQueueConnectionFactory getConnection() {
    MQQueueConnectionFactory connection = new MQQueueConnectionFactory();
    try {
        connection.setTransportType(1);
        connection.setQueueManager(queuemanagername);
        connection.setHostName(hostName);
        connection.setPort(Integer.parseInt(port));
        connection.setChannel(channel);
    } catch (Exception e) {
        System.out.println("Error");
    }

    return connection;
}

@Bean
public MQQueue reciverBean() {
    MQQueue queue = new MQQueue();

    try {
        queue.setBaseQueueManagerName(queuemanagername);
        queue.setBaseQueueName(queueName);

    } catch (Exception ex) {
        System.out.println("Error");
    }
    return queue;
}

@ServiceActivator(inputChannel = "queureader")
public void Print(Message<?> msg) {

    System.out.println(msg.getPayload().toString());
}

Make sure u add the following dependencies in your pom.xml

       <dependency>
        <groupId>com.ibm</groupId>
        <artifactId>com.ibm.mqjms</artifactId>
        <version>5.3.07</version>
    </dependency>
    <dependency>
        <groupId>com.ibm</groupId>
        <artifactId>com.ibm.disthub2.dhbcore</artifactId>
        <version>7.1.0.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.ibm/com.ibm.mq -->
    <dependency>
        <groupId>com.ibm</groupId>
        <artifactId>com.ibm.mq</artifactId>
        <version>5.3.07</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.resource/connector-api -->
    <dependency>
        <groupId>javax.resource</groupId>
        <artifactId>connector-api</artifactId>
        <version>1.6-alpha-1</version>
        <scope>provided</scope>
    </dependency>
            <!-- https://mvnrepository.com/artifact/com.ibm/com.ibm.mq -->
    <dependency>
        <groupId>com.ibm</groupId>
        <artifactId>com.ibm.mq</artifactId>
        <version>5.3.07</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.resource/connector -->
<dependency>
    <groupId>javax.resource</groupId>
    <artifactId>connector</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
</dependency>

Please set the respective values for the connection details. Thank You!!!

Sagar Shetty
  • 165
  • 2
  • 5