![JAR search and dependency download from the Maven repository](/logo.png)
pro.jk.ejoker.queue.skeleton.AbstractEJokerQueueProducer Maven / Gradle / Ivy
package pro.jk.ejoker.queue.skeleton;
import java.util.concurrent.Future;
import pro.jk.ejoker.common.context.annotation.context.Dependence;
import pro.jk.ejoker.common.service.IWorkerService;
import pro.jk.ejoker.messaging.IMessage;
import pro.jk.ejoker.messaging.IMessagePublisher;
import pro.jk.ejoker.queue.SendQueueMessageService;
import pro.jk.ejoker.queue.SendQueueMessageService.SendServiceContext;
import pro.jk.ejoker.queue.skeleton.aware.EJokerQueueMessage;
import pro.jk.ejoker.queue.skeleton.aware.IProducerWrokerAware;
public abstract class AbstractEJokerQueueProducer implements IMessagePublisher, IWorkerService {
/**
* all command will send by this object.
*/
@Dependence
protected SendQueueMessageService sendQueueMessageService;
private IProducerWrokerAware producer;
public AbstractEJokerQueueProducer useProducer(IProducerWrokerAware producer) {
this.producer = producer;
return this;
}
@Override
public AbstractEJokerQueueProducer start() {
try {
producer.start();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return this;
}
@Override
public AbstractEJokerQueueProducer shutdown() {
try {
producer.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
return this;
}
@Override
public Future publishAsync(TMessage message) {
// return sendQueueMessageService.sendMessageAsync(
// producer,
// this.getMessageType(message),
// this.getMessageClassDesc(message),
// this.createEQueueMessage(message),
// this.getRoutingKey(message),
// message.getId(),
// message.getItems());
return sendQueueMessageService.sendMessageAsync(
producer,
this.createEQueueMessage(message));
}
@Override
public boolean isAllReady() {
return true;
}
abstract protected String getMessageType(TMessage message);
abstract protected String getRoutingKey(TMessage message);
abstract protected SendServiceContext createEQueueMessage(TMessage message);
protected String getMessageClassDesc(TMessage message) {
return message.getClass().getSimpleName();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy