All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pro.jk.ejoker.queue.applicationMessage.ApplicationMessagePublisher Maven / Gradle / Ivy

There is a newer version: 3.0.7.1
Show newest version
package pro.jk.ejoker.queue.applicationMessage;

import java.nio.charset.Charset;

import pro.jk.ejoker.common.context.annotation.context.Dependence;
import pro.jk.ejoker.common.context.annotation.context.EService;
import pro.jk.ejoker.common.service.IJSONConverter;
import pro.jk.ejoker.infrastructure.ITypeNameProvider;
import pro.jk.ejoker.messaging.IApplicationMessage;
import pro.jk.ejoker.queue.ITopicProvider;
import pro.jk.ejoker.queue.QueueMessageTypeCode;
import pro.jk.ejoker.queue.SendQueueMessageService.SendServiceContext;
import pro.jk.ejoker.queue.skeleton.AbstractEJokerQueueProducer;
import pro.jk.ejoker.queue.skeleton.aware.EJokerQueueMessage;

@EService
public class ApplicationMessagePublisher extends AbstractEJokerQueueProducer {

	@Dependence
	private ITopicProvider messageTopicProvider;
	
	@Dependence
	private IJSONConverter jsonConverter;
	
	@Dependence
	private ITypeNameProvider typeNameProvider;

	@Override
	protected SendServiceContext createEQueueMessage(IApplicationMessage message) {
		String topic = messageTopicProvider.getTopic(message);
		String data = jsonConverter.convert(message);

		return new SendServiceContext(this.getMessageType(message),
				this.getMessageClassDesc(message),
				new EJokerQueueMessage(
						topic,
						QueueMessageTypeCode.ApplicationMessage.ordinal(),
						data.getBytes(Charset.forName("UTF-8")),
						typeNameProvider.getTypeName(message.getClass())),
				data,
				this.getRoutingKey(message),
				message.getId(),
				message.getItems());
	}

	@Override
	protected String getMessageType(IApplicationMessage message) {
		return "applicationMessage";
	}

	@Override
	protected String getRoutingKey(IApplicationMessage message) {
		return message.getId();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy