<int:channel id="common-message.producer">
<int:queue/>
</int:channel>
<int-kafka:outbound-channel-adapter id="kafkaOutboundChannelAdapter"
kafka-producer-context-ref="kafkaProducerContext"
auto-startup="false"
channel="common-message.producer"
order="3">
<int:poller fixed-delay="10" time-unit="MILLISECONDS" receive-timeout="0" task-executor="taskExecutor"/>
</int-kafka:outbound-channel-adapter>
<task:executor id="taskExecutor" pool-size="5" keep-alive="120" queue-capacity="500"/>
<bean id="producerProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="topic.metadata.refresh.interval.ms">3600000</prop>
<prop key="message.send.max.retries">5</prop>
<prop key="serializer.class">kafka.serializer.StringEncoder</prop>
<prop key="request.required.acks">1</prop>
</props>
</property>
</bean>
<!-- <bean id="kafkaEncoder"
class="org.springframework.integration.kafka.serializer.avro.AvroReflectDatumBackedKafkaEncoder">
<constructor-arg value="java.lang.String"/>
</bean>-->
<bean id="kafkaEncoder" class="org.springframework.integration.kafka.serializer.common.StringEncoder" />
<int-kafka:producer-context id="kafkaProducerContext" producer-properties="producerProperties">
<int-kafka:producer-configurations>
<int-kafka:producer-configuration broker-list="${mq.broker_list}"
key-class-type="java.lang.String"
value-class-type="java.lang.String"
topic="test"
value-encoder="kafkaEncoder"
key-encoder="kafkaEncoder"
compression-type="none"/>
</int-kafka:producer-configurations>
</int-kafka:producer-context>
<context:component-scan base-package="org.lottery.common.message.impl.kafka" />
private static final String CONFIG = "classpath*:/common-message-test.xml";
private static final Random rand = new Random();
@Test
public void testSend() {
final ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(CONFIG);
ctx.start();
final MessageChannel channel = ctx.getBean("common-message.producer", MessageChannel.class);
channel.send(MessageBuilder.withPayload("from messageChannel" + System.currentTimeMillis())
.setHeader(KafkaHeaders.MESSAGE_KEY, "key")
.setHeader(KafkaHeaders.TOPIC, "test")
.build());
MessageProducer messageProducer = ctx.getBean(MessageProducer.class);
messageProducer.send("test", "from messageProducer" + System.currentTimeMillis());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ctx.close();
}
2015-09-17 17:41:03
[DEBUG]-[Thread: main]-[org.springframework.integration.channel.AbstractMessageChannel.send()]: postSend (sent=true) on channel 'common-message.producer', message: GenericMessage [payload=11111111111, headers={timestamp=1442482863729, id=b30d5275-5b16-aacb-2fb3-25c4242f12a1, kafka_messageKey=key, kafka_topic=test}]
[DEBUG]-[Thread: main]-[org.springframework.integration.channel.AbstractMessageChannel.send()]: postSend (sent=true) on channel 'common-message.producer', message: GenericMessage [payload=from messageChannel1442483971691, headers={timestamp=1442483971697, id=29c3a705-eb16-34b8-1be7-d5400d89a03d, kafka_messageKey=key, kafka_topic=test}]
2015-09-17 17:59:31
[DEBUG]-[Thread: main]-[org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean()]: Returning cached instance of singleton bean 'messageProducerKafkaImpl'
2015-09-17 17:59:31
[DEBUG]-[Thread: main]-[org.springframework.integration.channel.AbstractMessageChannel.send()]: preSend on channel 'common-message.producer', message: GenericMessage [payload=from messageProducer1442483971697, headers={timestamp=1442483971697, id=e32b4087-5629-cf91-7d64-4f68b606a86b, kafka_messageKey=key, kafka_topic=test}]
2015-09-17 17:59:31
[DEBUG]-[Thread: main]-[org.springframework.integration.channel.AbstractMessageChannel.send()]: postSend (sent=true) on channel 'common-message.producer', message: GenericMessage [payload=from messageProducer1442483971697, headers={timestamp=1442483971697, id=e32b4087-5629-cf91-7d64-4f68b606a86b, kafka_messageKey=key, kafka_topic=test}]
2015-09-17 17:59:31
[DEBUG]-[Thread: taskExecutor-2]-[org.springframework.integration.channel.AbstractPollableChannel.receive()]: postReceive on channel 'common-message.producer', message: GenericMessage [payload=from messageChannel1442483971691, headers={timestamp=1442483971697, id=29c3a705-eb16-34b8-1be7-d5400d89a03d, kafka_messageKey=key, kafka_topic=test}]
2015-09-17 17:59:31
[DEBUG]-[Thread: taskExecutor-2]-[org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll()]: Poll resulted in Message: GenericMessage [payload=from messageChannel1442483971691, headers={timestamp=1442483971697, id=29c3a705-eb16-34b8-1be7-d5400d89a03d, kafka_messageKey=key, kafka_topic=test}]
![image](https://cloud.githubusercontent.com/assets/5570216/9930399/09a70432-5d66-11e5-81ac-afcbcb67d85f.png)