Files
ProjectOctopus/server/src/main/java/io/wdd/rpc/message/ToAgentOrder.java
2022-11-29 23:13:58 +08:00

56 lines
1.5 KiB
Java

package io.wdd.rpc.message;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.wdd.common.beans.rabbitmq.OctopusMessage;
import io.wdd.common.beans.rabbitmq.OctopusMessageType;
import io.wdd.common.handler.MyRuntimeException;
import io.wdd.rpc.init.FromServerMessageBinding;
import lombok.SneakyThrows;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.amqp.RabbitHealthIndicator;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* adaptor
* provide override method to convert Object and send to rabbitmq
*/
@Component
public class ToAgentOrder {
@Resource
RabbitTemplate rabbitTemplate;
@Resource
FromServerMessageBinding fromServerMessageBinding;
/**
*
* send to Queue -- InitFromServer
*
* @param message octopus message
*/
public void send(OctopusMessage message){
// only accept INIT type message
if (!OctopusMessageType.INIT.equals(message.getType())) {
throw new MyRuntimeException("To Agent Order method usage wrong !");
}
// send to Queue -- InitFromServer
rabbitTemplate.convertAndSend(fromServerMessageBinding.INIT_EXCHANGE, fromServerMessageBinding.INIT_FROM_SERVER_KEY, writeData(message));
}
@SneakyThrows
private byte[] writeData(Object data){
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsBytes(data);
}
}