Spring Stream试图在IBM MQueue中创建Topic而不是Queue

时间:2017-04-21 20:58:03

标签: spring ibm-mq spring-cloud-stream

我试图弄清楚如何使用spring-cloud-stream-binder-ibm-mq将Spring Boot Streams与MQueue一起使用。我可以连接到MQueue,但获得MQJE001: Completion Code '2', Reason '2035'MQQueueConnectionFactory。我确实向管理员确认它是一个队列,而不是一个主题。

我可以使用基于simplest-sample-applications-using-websphere-mq-jms@EnableBinding({Sink.class, Source.class}) @SpringBootApplication public class MQueueStreamApplication { private final static AtomicInteger counter = new AtomicInteger(); private final Logger logger = LoggerFactory.getLogger(getClass()); public static void main(String[] args) { SpringApplication.run(MQueueStreamApplication.class, args); } @Bean @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedRate = "2000")) public MessageSource<String> timeSource() { return () -> { String message = String.format("Timed Message %d", counter.incrementAndGet()); logger.info("Producing Message: {}", message); return MessageBuilder.withPayload(message).setHeader("Message-Type", "mqueue-stream").build(); }; } @ServiceActivator(inputChannel = Sink.INPUT) public void serviceSink(Message<String> message) { String payload = String.valueOf(message.getPayload()); logger.info("Received Message: {} [{}]", payload, message.getHeaders()); } } 使用一些示例代码进行连接,所以我知道MQueue正在运行。

这是我的计划。我已经成功地为卡夫卡使用了相同的模式。

application.yml

这是我的queue:///。我曾尝试使用和不使用spring: cloud: stream: bindings: input: destination: queue:///EMB_DEV_QUEUE group: mqueue-stream # binder: ibmmq output: destination: queue:///EMB_DEV_QUEUE ibmmq: host: vm-dev-q01.corp.int port: 1414 channel: EMB_DEV_CHANNEL queueManager: EMB_DEV_QMGR 前缀。示例程序使用前缀。

buildscript {
    ext {
        springBootVersion = '1.5.3.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

version = '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')

    compile('org.springframework.cloud:spring-cloud-stream')
    compile('org.springframework.cloud:spring-cloud-stream-binder-jms-ibm-mq:1.0.0.BUILD-SNAPSHOT')

    testCompile('org.springframework.boot:spring-boot-starter-test')
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:Dalston.RELEASE"
    }
}

这是我的Gradle版本。

spring-cloud-stream-binder-ibm-mq

我按照说明构建了9.0.0.0。我从MQueue安装中获得了两个必需的jar。清单说明版本为9,因此我在pom.xml

中使用了{{1}}

我是MQueue的新手,对Streams的经验有限。我已经能够成功连接到卡夫卡。我将不胜感激任何帮助。

韦斯。

1 个答案:

答案 0 :(得分:0)

Spring Cloud Stream使用比常规JMS / IBM-MQ应用程序更具见解性的基础架构,以便能够实现消费者组和分区等功能 - 在这种情况下,目标是一个主题 - 有关详细信息,请参阅https://github.com/spring-cloud/spring-cloud-stream-binder-ibm-mq#how-it-works