实际上,引用spring-rabbitmq, 可以使用rabbitmqtemplate
但如果直接用rabbitmq 的话,日后改别的 mq方式,就难了。
所以,在抽象出属于自己想买的一层mq
sender
接口 MessageSender send(Message message)
实现类 MessageSenderFactory
在里面注入rabbitmqTemplate ,还有messagecoverter,写一个内部实现messagesender接口的类,复写send()
里面用到 TransactionSynchronizationManager.isSynchronizationActive()
TransactionSynchronizationManager.registerSynchronization(newTransactionSynchronizationAdapter() {})
listener
抽象类AbstractMessageListener
实现接口 MessageListener InitializingBean
复写 onmessage(message)
特别提下
FixedBackOffPolicy RetryTemplate
重试机制
写业务类继承AbstractMessageListener 复写 onmessage(message)
messagecoverter
KryoMessageConverter 实现messagecoverter
复写 frommessge tomessage
用到 KryoPool
kryo=kryoPool.borrow();
kryo.register(com.xx.message.class);
kryo.readObject(new Input(), message)
kryo=kryoPool.borrow();
Output o=newOutput(1024,-1);
kryo.writeObject(o,object);
网友评论