알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
Spring MVC Active mq 예제 example 본문
Spring ActiveMq 예제
Spring 사용시 AciteveMq 을 사용할 일이 있어서 사용 예제를 분석 하고 남기려고 합니다.
먼저 dependency 는
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.10.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
이 2가지 입니다.
그리고 Bean 은 여기에 등록 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
위에 해당 하는 부분 스키마를 등록해 줍니다.
<bean id="OEEconnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://127.0.0.1:61616</value>
</property>
</bean>
<bean id="OEEjmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory" ref="OEEconnectionFactory"/>
</bean>
먼저 위에 소스에서 보듯 커넥터를 만들어 줍니다.
<bean id="OEEqueueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="dbin.queue"/>
</bean>
그리고 기본으로 사용할 Queue Subject Bean 을 만들어 줍니다.
그리고 나서 MessageConverter 가 필요합니다.
public class OEEActivemqMsgConverterImpl implements MessageConverter {
@Override
public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException {
// TODO Auto-generated method stub
return null;
}
@Override
public Object fromMessage(Message message) throws JMSException, MessageConversionException {
// TODO Auto-generated method stub
return null;
}
}
일단 MessageConverter 에서 toMessage(Object object, Session session) Send 할때 해당 메소드를 타는데
해당 메소드는 추후에 JmsTemplate 객체에서 convertAndSend(Object) 를 사용할때 타고 들어가게 됩니다.
그러니 Obejct로 사용할 객체를 만들어 줍니다.
public class OEEStateMqMessage {
String MachineCode;
String State;
public String getMachineCode() {
return MachineCode;
}
public void setMachineCode(String machineCode) {
MachineCode = machineCode;
}
public String getState() {
return State;
}
public void setState(String state) {
State = state;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "MachineCode"+MachineCode;
}
}
그리고 나서 일단 다시
<bean id="OEEmsgConverter" class="co.kr.wisol.webmms.dao.OEEActivemqMsgConverterImpl"/>
Converter 를 Bean을 생성한 뒤에
<bean id="OEEproducerJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="OEEjmsFactory"/>
<property name="defaultDestination" ref="OEEqueueDestination"/>
<property name="messageConverter" ref="OEEmsgConverter"/>
</bean>
위와 같이 JmsTemplate 을 생성해 줍니다.
public class webmmsDAOImpl implements webmmsDAO {
@Resource(name = "OEEproducerJmsTemplate")
JmsTemplate OEEmqProducer;
@Override
public void updateOIMachineState(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
OEEStateMqMessage msg = new OEEStateMqMessage();
msg.setMachineCode("TESTCODE");
OEEmqProducer.convertAndSend(msg);
response.getWriter().print("done");
}
}
public class OEEActivemqMsgConverterImpl implements MessageConverter {
@Override
public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException {
// TODO Auto-generated method stub
if(object instanceof OEEStateMqMessage) {
OEEStateMqMessage msg = (OEEStateMqMessage)object;
TextMessage sendmsg = session.createTextMessage(msg.toString());
return sendmsg;
}
return null;
}
@Override
public Object fromMessage(Message message) throws JMSException, MessageConversionException {
// TODO Auto-generated method stub
return null;
}
}
그러면 TextMessge 로 메세지를 보내게 됩니다.
'Web ' 카테고리의 다른 글
webxr googleAR 지원 계획 (0) | 2018.11.26 |
---|---|
Spring FrameWork RestTemplate get queryparam 한글 처리 (0) | 2018.11.21 |
javascript async await 동기화 함수 (0) | 2018.11.12 |
Spring Rest API Client(POST + Header) (0) | 2018.11.01 |
javascirpt Number to excel Column Name 바꾸기 (0) | 2018.10.25 |