public void setTopic(String topic) { Assert.hasText(topic, "'topic' must not be an empty string."); this.setTopicExpression(new LiteralExpression(topic)); }
public void setTopic(String topic) { Assert.hasText(topic, "'topic' must not be an empty string."); this.setTopicExpression(new LiteralExpression(topic)); }
@Test @RedisAvailable public void testRedisPublishingMessageHandler() throws Exception { int numToTest = 10; String topic = "si.test.channel"; final CountDownLatch latch = new CountDownLatch(numToTest * 2); RedisConnectionFactory connectionFactory = this.getConnectionFactoryForTest(); MessageListenerAdapter listener = new MessageListenerAdapter(); listener.setDelegate(new Listener(latch)); listener.setSerializer(new StringRedisSerializer()); listener.afterPropertiesSet(); RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.afterPropertiesSet(); container.addMessageListener(listener, Collections.<Topic>singletonList(new ChannelTopic(topic))); container.start(); this.awaitContainerSubscribed(container); final RedisPublishingMessageHandler handler = new RedisPublishingMessageHandler(connectionFactory); handler.setTopicExpression(new LiteralExpression(topic)); for (int i = 0; i < numToTest; i++) { handler.handleMessage(MessageBuilder.withPayload("test-" + i).build()); } for (int i = 0; i < numToTest; i++) { handler.handleMessage(MessageBuilder.withPayload(("test-" + i).getBytes()).build()); } assertTrue(latch.await(10, TimeUnit.SECONDS)); container.stop(); }
@Bean @ServiceActivator(inputChannel = Sink.INPUT) public MessageHandler redisSinkMessageHandler() { if (this.redisSinkProperties.isKey()) { RedisStoreWritingMessageHandler redisStoreWritingMessageHandler = new RedisStoreWritingMessageHandler( this.redisConnectionFactory); redisStoreWritingMessageHandler.setKeyExpression(this.redisSinkProperties.keyExpression()); return redisStoreWritingMessageHandler; } else if (this.redisSinkProperties.isQueue()) { return new RedisQueueOutboundChannelAdapter(this.redisSinkProperties.queueExpression(), this.redisConnectionFactory); } else { // must be topic RedisPublishingMessageHandler redisPublishingMessageHandler = new RedisPublishingMessageHandler( this.redisConnectionFactory); redisPublishingMessageHandler.setTopicExpression(this.redisSinkProperties.topicExpression()); return redisPublishingMessageHandler; } }