Spring 生产者/消费者 使用
//服务调用
@Resource(name = "leadMessageService")
private MessageService messageService;
public interface MessageService {
void sendNotifycation(MessageNotifyDTO msg);
}
@Log4j
@Component("leadMessageService")
public class MessageServiceImpl implements MessageService {
@Autowired
private Producer producerClient;
@Override
public void sendNotifycation(MessageNotifyDTO msg) {
String onOff = LionConfigUtils.getProperty("ad-saleslead-mq.on-off", "true");
if (!Boolean.valueOf(onOff)) {
log.info("MessageServiceImpl@sendNotifycation the turn-off is closed");
return;
}
String s = "0";
try {
s = producerClient.sendMessage(msg);
log.info("sendMessage Success to : "+msg.getUserID());
} catch (SendFailedException sfe) {
log.error("messageId " + s + " send Failed, reason is " + sfe.getMessage());
sfe.printStackTrace();
}
}
}
生产者的bean配置
<bean id="apolloMessageDestination" class="com.dianping.swallow.common.message.Destination" factory-method="topic">
<constructor-arg value="apollo-message-mq-create" />
</bean>
<bean id="producerClient" factory-bean="producerFactory" factory-method="createProducer">
<constructor-arg>
<ref bean="apolloMessageDestination" />
</constructor-arg>
<constructor-arg>
<ref bean="producerConfig" />
</constructor-arg>
</bean>
消费者的bean 配置
<bean id="salesLeadListener" class="com.dianping.saleslead.mq.listener.SalesLeadListener"
init-method="init" destroy-method="close">
<property name="topic" value="dp_merchant_message_common" />
<property name="consumerId" value="saleslead-refund-consumer" />
</bean>
代码todo...
