Search in sources :

Example 1 with Topic

use of org.springframework.data.redis.listener.Topic in project camel by apache.

the class RedisConsumerTest method registerConsumerForTwoChannelTopics.

@Test
public void registerConsumerForTwoChannelTopics() throws Exception {
    ArgumentCaptor<Collection> collectionCaptor = ArgumentCaptor.forClass(Collection.class);
    verify(listenerContainer).addMessageListener(any(MessageListener.class), collectionCaptor.capture());
    Collection<ChannelTopic> topics = collectionCaptor.getValue();
    Iterator<ChannelTopic> topicIterator = topics.iterator();
    Topic firstTopic = topicIterator.next();
    Topic twoTopic = topicIterator.next();
    assertEquals("one", firstTopic.getTopic());
    assertEquals("two", twoTopic.getTopic());
}
Also used : ChannelTopic(org.springframework.data.redis.listener.ChannelTopic) MessageListener(org.springframework.data.redis.connection.MessageListener) Collection(java.util.Collection) Topic(org.springframework.data.redis.listener.Topic) ChannelTopic(org.springframework.data.redis.listener.ChannelTopic) Test(org.junit.Test)

Example 2 with Topic

use of org.springframework.data.redis.listener.Topic in project camel by apache.

the class RedisConsumer method toTopics.

private Collection<Topic> toTopics(String channels) {
    String[] channelsArrays = channels.split(",");
    List<Topic> topics = new ArrayList<>();
    for (String channel : channelsArrays) {
        String name = channel.trim();
        if (Command.PSUBSCRIBE.equals(redisConfiguration.getCommand())) {
            topics.add(new PatternTopic(name));
        } else if (Command.SUBSCRIBE.equals(redisConfiguration.getCommand())) {
            topics.add(new ChannelTopic(name));
        } else {
            throw new IllegalArgumentException("Unsupported Command " + redisConfiguration.getCommand());
        }
    }
    return topics;
}
Also used : ChannelTopic(org.springframework.data.redis.listener.ChannelTopic) PatternTopic(org.springframework.data.redis.listener.PatternTopic) ArrayList(java.util.ArrayList) ChannelTopic(org.springframework.data.redis.listener.ChannelTopic) Topic(org.springframework.data.redis.listener.Topic) PatternTopic(org.springframework.data.redis.listener.PatternTopic)

Example 3 with Topic

use of org.springframework.data.redis.listener.Topic in project spring-integration by spring-projects.

the class RedisInboundChannelAdapter method onInit.

@Override
protected void onInit() {
    super.onInit();
    boolean hasTopics = false;
    if (this.topics != null) {
        Assert.noNullElements(this.topics, "'topics' may not contain null elements.");
        hasTopics = true;
    }
    boolean hasPatterns = false;
    if (this.topicPatterns != null) {
        Assert.noNullElements(this.topicPatterns, "'topicPatterns' may not contain null elements.");
        hasPatterns = true;
    }
    Assert.state(hasTopics || hasPatterns, "at least one topic or topic pattern is required for subscription.");
    if (this.messageConverter instanceof BeanFactoryAware) {
        ((BeanFactoryAware) this.messageConverter).setBeanFactory(this.getBeanFactory());
    }
    MessageListenerDelegate delegate = new MessageListenerDelegate();
    MessageListenerAdapter adapter = new MessageListenerAdapter(delegate);
    adapter.setSerializer(this.serializer);
    List<Topic> topicList = new ArrayList<Topic>();
    if (hasTopics) {
        for (String topic : this.topics) {
            topicList.add(new ChannelTopic(topic));
        }
    }
    if (hasPatterns) {
        for (String pattern : this.topicPatterns) {
            topicList.add(new PatternTopic(pattern));
        }
    }
    adapter.afterPropertiesSet();
    this.container.addMessageListener(adapter, topicList);
    this.container.afterPropertiesSet();
}
Also used : MessageListenerAdapter(org.springframework.data.redis.listener.adapter.MessageListenerAdapter) BeanFactoryAware(org.springframework.beans.factory.BeanFactoryAware) ChannelTopic(org.springframework.data.redis.listener.ChannelTopic) PatternTopic(org.springframework.data.redis.listener.PatternTopic) ArrayList(java.util.ArrayList) Topic(org.springframework.data.redis.listener.Topic) PatternTopic(org.springframework.data.redis.listener.PatternTopic) ChannelTopic(org.springframework.data.redis.listener.ChannelTopic)

Aggregations

ChannelTopic (org.springframework.data.redis.listener.ChannelTopic)3 Topic (org.springframework.data.redis.listener.Topic)3 ArrayList (java.util.ArrayList)2 PatternTopic (org.springframework.data.redis.listener.PatternTopic)2 Collection (java.util.Collection)1 Test (org.junit.Test)1 BeanFactoryAware (org.springframework.beans.factory.BeanFactoryAware)1 MessageListener (org.springframework.data.redis.connection.MessageListener)1 MessageListenerAdapter (org.springframework.data.redis.listener.adapter.MessageListenerAdapter)1