始于接触,命令大全

来源:http://www.smjxgs.com 作者:王中王鉄算盘 人气:99 发布时间:2019-08-13
摘要:ActiveMQ(一)起初接触-编写德姆o,activemqdemo 宣称 转发请注明出处! Reprint please indicate the source! 什么是JMS JMS即Java音信服务(Java MessageService)应用程序接口,是一个Java平新北有关面向新

ActiveMQ(一)起初接触-编写德姆o,activemqdemo

宣称 转发请注明出处! Reprint please indicate the source!

什么是JMS

JMS即Java音信服务(Java Message Service)应用程序接口,是一个Java平新北有关面向新闻中间件(MOM)的API,用于在多少个应用程序之间,或遍布式系统中发送消息,举行异步通讯。Java音信服务是一个与具象平台非亲非故的API,绝大许多MOM提供商都对JMS提供协助。

援用自百度百科

什么是ActiveMQ

ActiveMQ 是Apache出品,最盛行的,技艺强大的开源音信总线。ActiveMQ 是贰个完全帮忙JMS1.1和J2EE 1.4标准的 JMS Provider完成,固然JMS标准出台已经是相当久的事体了,但是JMS在前几天的J2EE应用个中依旧扮演着特殊的地点。

引用自百度百科

官方主页

高于书籍

ActiveMQ in Action

条件布署

Maven依赖

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.14.4</version>
</dependency>

启动broker

要运转起来demo得先,运营broker。小编是在虚构机上测量试验的。ip:192.168.235.100

进入到 执行:

activemq start

测试

访谈页面 

图片 1

暗中认可用户名/密码:admin/admin

demo

点对点情势

JMSProducer.java

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: JMS ActiveMQ Demo测试 消息生产者<br>
 * 运行前,需要打开本地的activemq。
 * 如果需要更改broker地址,要提前运行相应的broker。
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 11:06<br>
 */
public class JMSProducer {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
//    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)
    private static final int SENDNUM = 10; // 发送的消息数量

    public static void main(String[] args) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageProducer messageProducer; // 消息生产者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        // 创建连接
        try {
            connection = connectionFactory.createConnection();
            connection.start(); // 启动连接

            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 提交事务,自动确认

            destination = session.createQueue("FirstQueue"); // 创建消息队列
            messageProducer = session.createProducer(destination); // 创建消息发送者

            sendMessage(session, messageProducer); // 发送消息
            session.commit(); // 提交事务
        } catch (JMSException e) {
            e.printStackTrace();
        } finally {
            if (connection!=null)
                try {
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
        }
    }

    /**
     * 发送消息
     * @param session 会话
     * @param messageProducer 消息生产者
     */
    private static void sendMessage(Session session, MessageProducer messageProducer) throws JMSException {
        for (int i=0; i<JMSProducer.SENDNUM; i  ) {
            TextMessage message = session.createTextMessage("ActiveMQ 发送的消息 " i);
            System.out.println("发送消息: ActiveMQ 发送的消息 " i);
            messageProducer.send(message);
        }
    }
}

运行一下JMSProudcer,生产10条新闻。

JMSConsumer.java

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQMessageConsumer;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 消息消费者1-点对点模式<br>
 *     实现方式1 循环检测<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 13:44<br>
 */
public class JMSConsumer {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
    //    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)

    public static void main(String args[]) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageConsumer messageConsumer; // 消息消费者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        try {
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 消费消息不需要事务,自动确认
            destination = session.createQueue("FirstQueue"); // 创建消息队列

            messageConsumer = session.createConsumer(destination); // 创建消息消费者

            while (true) {
                TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);// 设置延时为100s
                if (textMessage!=null) { // 接收到消息
                    System.out.println("接收的消息:" textMessage.getText());
                }else {
                    break;
                }
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

运作一下JMSConsumer,开销10条音讯。

图片 2

这种措施花费新闻,通过轮回检查,鲜明是不高明的。

下边,通过设置监听的法门,完结音信费用。

再次运营一下JMSProudcer,生产10条音信。

图片 3

先是落到实处一下监听器

Listenr.java

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 消息监听者<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 14:30<br>
 */
public class Listener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        try {
            System.out.println("收到消息:"   ((TextMessage)message).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

JMSConsumer2.java

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 消息消费者2-点对点模式<br>
 *     实现方式2 设置监听<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 13:44<br>
 */
public class JMSConsumer2 {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
    //    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)

    public static void main(String args[]) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageConsumer messageConsumer; // 消息消费者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        try {
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 消费消息不需要事务,自动确认
            destination = session.createQueue("FirstQueue"); // 创建消息队列

            messageConsumer = session.createConsumer(destination); // 创建消息消费者

            messageConsumer.setMessageListener(new Listener());// 注册消息监听
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

运作一下JMSConsumer2,新发生的音信被开支了。

图片 4

消息公布/订阅情势

小心:发表/订阅要先运维订阅,再运维发表工夫接收消息。

JMSConsumer.java

package com.jahentao.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 消息消费者-发布订阅模式 消息订阅者<br>
 *     实现方式 设置监听<br>
 *     消息订阅者1<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 13:44<br>
 */
public class JMSConsumer {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
    //    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)

    public static void main(String args[]) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageConsumer messageConsumer; // 消息消费者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        try {
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 消费消息不需要事务,自动确认
//            destination = session.createQueue("FirstQueue"); // 创建消息队列
            destination = session.createTopic("FirstTopic"); // 创建消息订阅者
            messageConsumer = session.createConsumer(destination); // 创建消息消费者

            messageConsumer.setMessageListener(new Listener());// 注册消息监听
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

Listener.java

package com.jahentao.activemq;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 订阅者1消息监听器<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 14:46:52<br>
 */
public class Listener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        try {
            System.out.println("订阅者一 收到消息:"   ((TextMessage)message).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

JMSConsumer2.java

package com.jahentao.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 消息消费者-发布订阅模式 消息订阅者<br>
 *     实现方式 设置监听<br>
 *     消息订阅者2<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 13:44<br>
 */
public class JMSConsumer2 {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
    //    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)

    public static void main(String args[]) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageConsumer messageConsumer; // 消息消费者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        try {
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 消费消息不需要事务,自动确认
//            destination = session.createQueue("FirstQueue"); // 创建消息队列
            destination = session.createTopic("FirstTopic"); // 创建消息订阅者
            messageConsumer = session.createConsumer(destination); // 创建消息消费者

            messageConsumer.setMessageListener(new Listener2());// 注册消息监听
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }

}

Listener2.java

package com.jahentao.activemq;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: 订阅者2消息监听器<br>
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 14:46:52<br>
 */
public class Listener2 implements MessageListener {
    @Override
    public void onMessage(Message message) {
        try {
            System.out.println("订阅者二 收到消息:"   ((TextMessage)message).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

第一,分别运营JMSConsumer、JMSConsumer2实行订阅。

图片 5

JMSProducer.java

package com.jahentao.activemq;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created with IntelliJ IDEA.<br>
 * Description: JMS ActiveMQ Demo测试 发布订阅模式 消息发布者<br>
 * 运行前,需要打开本地的activemq。
 * 如果需要更改broker地址,要提前运行相应的broker。
 * User: jahen<br>
 * Date: 2017-04-02<br>
 * Time: 14:42:59<br>
 */
public class JMSProducer {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; // 默认连接
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; // 默认密码
//    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL; // 默认连接地址 为 failover://tcp://localhost:61616
    private static final String BROKER_URL = "failover://tcp://192.168.235.100:61616"; // 指定连接地址 (my VM)
    private static final int SENDNUM = 10; // 发送的消息数量

    public static void main(String[] args) {
        ConnectionFactory connectionFactory; // 连接工程,生产Connection
        Connection connection = null; // 连接
        Session session; // 会话 接受或者发送消息的线程
        Destination destination; // 消息的目的地
        MessageProducer messageProducer; // 消息生产者

        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        // 创建连接
        try {
            connection = connectionFactory.createConnection();
            connection.start(); // 启动连接

            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 提交事务,自动确认

//            destination = session.createQueue("FirstQueue"); // 创建消息队列
            destination = session.createTopic("FirstTopic"); // 创建主题
            messageProducer = session.createProducer(destination); // 创建消息发送者

            sendMessage(session, messageProducer); // 发送消息
            session.commit(); // 提交事务
        } catch (JMSException e) {
            e.printStackTrace();
        } finally {
            if (connection!=null)
                try {
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
        }
    }

    /**
     * 发送消息
     * @param session 会话
     * @param messageProducer 消息生产者
     */
    private static void sendMessage(Session session, MessageProducer messageProducer) throws JMSException {
        for (int i = 0; i< JMSProducer.SENDNUM; i  ) {
            TextMessage message = session.createTextMessage("ActiveMQ 发送的消息 " i);
            System.out.println("发送消息: ActiveMQ 发送的消息 " i);
            messageProducer.send(message);
        }
    }
}

然后运转JMSProducer。

图片 6

参考

java1234上揭橥的学科"一只扎进ActiveMQ"

那边学习的源码,托管在码云上

itemprop="url"> > id="indexUrl" itemprop="indexUrl">www.bkjia.com > id="isOriginal" itemprop="isOriginal">true > id="isBasedOnUrl" itemprop="isBasedOnUrl"> > id="genre" itemprop="genre">TechArticle > itemprop="description">ActiveMQ(一)伊始接触-编写德姆o,activemqdemo 表明转发请申明出处! Reprint please indicate the source! 什么是JMS J...

首先有限扶助solaris中设置的软件包满足供给(能够参见官方对设置SolarisStudio12.3的着力供给,至少必须安装开荒须要的包)。

Cmd 命令大全,cmd命令大全

CMD命令大全:cmd.exe--------CMD命令提醒符 ,gpedit.msc-----组计谋,chkdsk.exe-----Chkdsk磁盘检查,regedit.exe----注册表 等

itemprop="url"> id="indexUrl" itemprop="indexUrl">www.bkjia.com id="isOriginal" itemprop="isOriginal">true id="isBasedOnUrl" itemprop="isBasedOnUrl"> id="genre" itemprop="genre">TechArticle itemprop="description">Cmd 命令大全,cmd命令大全 CMD命令大全:cmd.exe--------CMD命令提示符 ,gpedit.msc-----组战术,chkdsk.exe-----Chkdsk磁盘检查,regedit.exe----注册表 等...

由于是在虚构机中设置,预分配的swap空间相当小,需临时增大swap空间,参照他事他说加以考察《Solaris 有时增减swap空间》。

root用户,解压SolarisStudio12.3-solaris-x86-pkg.tar.bz2后,进入文件目录,运转solarisstudio.sh:

bash-3.2# pwd
style="color: #ff6666;">/export/home/SolarisStudio12.3-solaris-x86-pkg
bash-3.2# ls -la
总数 916418
drwxrwxr-x 4 59001 staff 512 2011 12月 6 .
drwxr-xr-x 5 root root 512 12月 21日 12:50 ..
drwxr-xr-x 2 59001 staff 512 2011 12月 6 LEGAL
-r--r--r-- 1 59001 staff 7223 2011 12月 6 OSS12.3_README-pkgs-ja.html
-r--r--r-- 1 59001 staff 5324 2011 12月 6 OSS12.3_README-pkgs-zh_CN.html
-r--r--r-- 1 59001 staff 5174 2011 12月 6 OSS12.3_README-pkgs.txt
-r-xr-xr-x 1 59001 staff 16969 2011 12月 6 install_patches.sh
drwxr-xr-x 3 59001 staff 512 2011 12月 6 patches
-r-xr-xr-x 1 59001 staff 468921344 2011 12月 6 solarisstudio.sh
bash-3.2# ./solarisstudio.sh
Configuring the installer...
Searching for JVM on the system...
/hgfs: 操作不可采纳
Extracting installation data (can take a while, please wait)...
Running the installer wizard...
Java Accessibility Bridge for GNOME loaded.

style="color: #000000;">在弹出的体系剖判分界面中会提示未安装供给的修补程序,点击更加多音信,点击登时施行install_patches.sh,施行实现后点击下一步遵照向导采取要设置的机能。

itemprop="url"> id="indexUrl" itemprop="indexUrl">www.bkjia.com id="isOriginal" itemprop="isOriginal">true id="isBasedOnUrl" itemprop="isBasedOnUrl"> id="genre" itemprop="genre">TechArticle itemprop="description">首先保险solaris中设置的软件包满足供给(能够参见官方对安装SolarisStudio12.3的基本要求,至少必须设置开垦须要的包)。 由于是在设想机中...

本文由4887王中王鉄算盘奖结果发布于王中王鉄算盘,转载请注明出处:始于接触,命令大全

关键词:

上一篇:最清晰的使用教程

下一篇:没有了

最火资讯