Example usage for org.springframework.integration.support MessageBuilder fromMessage

List of usage examples for org.springframework.integration.support MessageBuilder fromMessage

Introduction

In this page you can find the example usage for org.springframework.integration.support MessageBuilder fromMessage.

Prototype

public static <T> MessageBuilder<T> fromMessage(Message<T> message) 

Source Link

Document

Create a builder for a new Message instance pre-populated with all of the headers copied from the provided message.

Usage

From source file:org.springframework.integration.jdbc.JdbcMessageStoreTests.java

@Test
@Transactional/*  w  w  w  . j  a  va  2s  . com*/
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1), messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2), messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*  w  ww  .ja v a 2  s . co  m*/
@Rollback(false)
@Repeat(20)
public void testSameMessageToMultipleGroups() throws Exception {

    final String group1Id = "group1";
    final String group2Id = "group2";

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore.addMessageToGroup(group1Id, message1);
    messageStore.addMessageToGroup(group2Id, message2);

    final Message<?> messageFromGroup1 = messageStore.pollMessageFromGroup(group1Id);
    final Message<?> messageFromGroup2 = messageStore.pollMessageFromGroup(group2Id);

    assertNotNull(messageFromGroup1);
    assertNotNull(messageFromGroup2);

    LOG.info("messageFromGroup1: " + messageFromGroup1.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup1.getHeaders().getSequenceNumber());
    LOG.info("messageFromGroup2: " + messageFromGroup2.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromGroup1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromGroup2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/*from www.j av a  2  s  .c o  m*/
@Rollback(false)
@Repeat(20)
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.store.JdbcChannelMessageStore.java

/**
 * Store a message in the database. The groupId identifies the channel for which
 * the message is to be stored.//from w w w .java 2  s .c  o  m
 *
 * Keep in mind that the actual groupdId (Channel
 * Identifier) is converted to a String-based UUID identifier.
 *
 * @param groupId the group id to store the message under
 * @param message a message
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
public MessageGroup addMessageToGroup(Object groupId, Message<?> message) {

    final String groupKey = getKey(groupId);

    final long createdDate = System.currentTimeMillis();
    final Message<?> result = MessageBuilder.fromMessage(message).setHeader(SAVED_KEY, Boolean.TRUE)
            .setHeader(CREATED_DATE_KEY, new Long(createdDate)).build();

    final Map innerMap = (Map) new DirectFieldAccessor(result.getHeaders()).getPropertyValue("headers");
    // using reflection to set ID since it is immutable through MessageHeaders
    innerMap.put(MessageHeaders.ID, message.getHeaders().get(MessageHeaders.ID));

    final String messageId = getKey(result.getHeaders().getId());
    final byte[] messageBytes = serializer.convert(result);

    jdbcTemplate.update(getQuery(channelMessageStoreQueryProvider.getCreateMessageQuery()),
            new PreparedStatementSetter() {
                public void setValues(PreparedStatement ps) throws SQLException {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Inserting message with id key=" + messageId);
                    }
                    ps.setString(1, messageId);
                    ps.setString(2, groupKey);
                    ps.setString(3, region);
                    ps.setLong(4, createdDate);
                    lobHandler.getLobCreator().setBlobAsBytes(ps, 5, messageBytes);
                }
            });

    return getMessageGroup(groupId);
}

From source file:org.springframework.integration.jms.ChannelPublishingJmsMessageListener.java

public void onMessage(javax.jms.Message jmsMessage, Session session) throws JMSException {
    Object result = jmsMessage;//from   w  ww . j  av a  2 s.c o m
    if (this.extractRequestPayload) {
        result = this.messageConverter.fromMessage(jmsMessage);
        if (logger.isDebugEnabled()) {
            logger.debug("converted JMS Message [" + jmsMessage + "] to integration Message payload [" + result
                    + "]");
        }
    }

    Map<String, Object> headers = headerMapper.toHeaders(jmsMessage);
    Message<?> requestMessage = (result instanceof Message<?>)
            ? MessageBuilder.fromMessage((Message<?>) result).copyHeaders(headers).build()
            : MessageBuilder.withPayload(result).copyHeaders(headers).build();
    if (!this.expectReply) {
        this.gatewayDelegate.send(requestMessage);
    } else {
        Message<?> replyMessage = this.gatewayDelegate.sendAndReceiveMessage(requestMessage);
        if (replyMessage != null) {
            Destination destination = this.getReplyDestination(jmsMessage, session);
            if (destination != null) {
                // convert SI Message to JMS Message
                Object replyResult = replyMessage;
                if (this.extractReplyPayload) {
                    replyResult = replyMessage.getPayload();
                }
                try {
                    javax.jms.Message jmsReply = this.messageConverter.toMessage(replyResult, session);
                    // map SI Message Headers to JMS Message Properties/Headers
                    headerMapper.fromHeaders(replyMessage.getHeaders(), jmsReply);
                    this.copyCorrelationIdFromRequestToReply(jmsMessage, jmsReply);
                    this.sendReply(jmsReply, destination, session);
                } catch (RuntimeException e) {
                    logger.error("Failed to generate JMS Reply Message from: " + replyResult, e);
                    throw e;
                }
            }
        } else if (logger.isDebugEnabled()) {
            logger.debug("expected a reply but none was received");
        }
    }
}

From source file:org.springframework.integration.x.gemfire.GemFireRPCMessaging.java

@Override
public void execute(FunctionContext functionContext) {
    Assert.isInstanceOf(GemFireMessage.class, functionContext.getArguments());
    GemFireMessage gemFireMessage = (GemFireMessage) functionContext.getArguments();

    if (logger.isDebugEnabled()) {
        logger.debug("GemFireRPCMessaging.receive " + "\n\tgemFireMessage = " + gemFireMessage
                + "\n\tmessageProducer = " + messageProducer + "\n\tmessageProducer.get() = "
                + messageProducer.get(gemFireMessage.getChannelName()));
    }/*from  www  .  j  a  v  a2 s.c o m*/
    GemFireMessageProducerSupport producerSupport = messageProducer.get(gemFireMessage.getChannelName());
    if (producerSupport != null) {
        Message message = gemFireMessage.getPayload();
        message = MessageBuilder.fromMessage(message).build();
        GemFireMessageProducerSupport handler = messageProducer.get(gemFireMessage.getChannelName());
        handler.pushMessage(message);
    }
    functionContext.getResultSender().lastResult(1);
}