• JMS ActiveMQ案例


    创建一个web工程

    导入ActiveMQ依赖的jar包  activemq-all-5.9.jar

    写一个生产者(send)servlet

    package com.sun.jms;
    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.jms.DeliveryMode;
    import javax.jms.Queue;
    import javax.jms.QueueConnection;
    import javax.jms.QueueConnectionFactory;
    import javax.jms.QueueSender;
    import javax.jms.QueueSession;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.naming.InitialContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    /**
    * Servlet implementation class JMSTest
    */
    @WebServlet("/Send")
    public class Send extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public Send() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    * response)
    */
    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    try {
    // get the initial context
    InitialContext context = new InitialContext();

    // lookup the queue object
    Queue queue = (Queue) context.lookup("java:comp/env/queue/queue0");

    // lookup the queue connection factory
    QueueConnectionFactory conFactory = (QueueConnectionFactory) context
    .lookup("java:comp/env/queue/connectionFactory");

    // create a queue connection
    QueueConnection queConn = conFactory.createQueueConnection();

    // create a queue session
    QueueSession queSession = queConn.createQueueSession(false,
    Session.DUPS_OK_ACKNOWLEDGE);

    // create a queue sender
    QueueSender queSender = queSession.createSender(queue);
    queSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // create a simple message to say "Hello World"
    TextMessage message = queSession.createTextMessage("Hello World");

    // send the message
    queSender.send(message);

    // print what we did
    out.write("Message Sent: " + message.getText());

    // close the queue connection
    queConn.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    * response)
    */
    protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    }

    }

    ======================================================

    写一个消费者(Receive)servlet

    package com.sun.jms;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.jms.Queue;
    import javax.jms.QueueConnection;
    import javax.jms.QueueConnectionFactory;
    import javax.jms.QueueReceiver;
    import javax.jms.QueueSession;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.naming.InitialContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter;

    /**
    * Servlet implementation class Receive
    */
    @WebServlet("/Receive")
    public class Receive extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public Receive() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    * response)
    */
    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();

    try {
    // get the initial context
    InitialContext context = new InitialContext();

    // lookup the queue object
    Queue queue = (Queue) context.lookup("java:comp/env/queue/queue0");

    // lookup the queue connection factory
    QueueConnectionFactory conFactory = (QueueConnectionFactory) context
    .lookup("java:comp/env/queue/connectionFactory");

    // create a queue connection
    QueueConnection queConn = conFactory.createQueueConnection();

    // create a queue session
    QueueSession queSession = queConn.createQueueSession(false,
    Session.AUTO_ACKNOWLEDGE);

    // create a queue receiver
    QueueReceiver queReceiver = queSession.createReceiver(queue);

    // start the connection
    queConn.start();

    // receive a message
    TextMessage message = (TextMessage) queReceiver.receive();

    // print the message
    out.write("Message Received: " + message.getText());

    // close the queue connection
    queConn.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    * response)
    */
    protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    }

    }

    =====================================================

    配置tomcat的tomcatconfcontext.xml

    <Resource name="queue/connectionFactory"
    auth="Container"
    type="org.apache.activemq.ActiveMQConnectionFactory"
    description="JMS Connection Factory"
    factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    brokerURL="tcp://localhost:61616"
    brokerName="LocalActiveMQBroker" />

    <Resource name="queue/queue0"
    auth="Container"
    type="org.apache.activemq.command.ActiveMQQueue"
    description="My Queue"
    factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    physicalName="TomcatQueue" />

    =======================================================

    启动ActiveMQ 进入http://localhost:8161/admin/queues.jsp 

    默认用户名和密码是admin

    运行后效果:

  • 相关阅读:
    30分钟带你了解Docker
    30分钟了解Springboot整合Shiro
    vuejs 和 element 搭建的一个后台管理界面
    MySQL缓存参数优化(转)
    MVC+EF(CODEFIRST)+EASYUI医药MIS系统
    博客园开通打赏功能以及HTTPS打赏失效的探究 -玩转打赏功能
    SpringMVC集成rabbitmq:优化秒杀下单环节
    国内最火5款Java微服务开源项目
    SpringCloud系列——SSO 单点登录
    玩转spring boot
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6285839.html
Copyright © 2020-2023  润新知