javaactivemq
㈠ java利用ActiveMQ達到實時更新狀態
我們以前這么做的. Socket 傳和收數據. 我們是在struts的action裡面 開啟socket的 然後發送數據 等待返回的數據 然後在顯示數據.
至於修改 那也一樣的action處理數據 發送數據 等待接收數據.
在進行通信的時候 進制之間的轉換 是很常見的 .
㈡ 請教java怎麼向activemq發送消息
一.Prop類(用來讀取屬性文件,單例)
package com.sitinspring.standardWeblogicJms;
import java.io.FileInputStream;
import java.util.Hashtable;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
public class Props {
private static final String File_Name = "jmsSetting.properties";
private static Properties propts;
public static void makeProptsInstance() {
propts = new Properties();
try {
propts.load(new FileInputStream(File_Name));
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static String get(String name){
if(propts==null){
makeProptsInstance();
}
return (String)propts.get(name);
}
@SuppressWarnings("unchecked")
public static Context getInitialContext(){
Context context=null;
String jndiFactory=Props.get("jndi.factory");
String providerUrl=Props.get("jndi.provider.url");
Hashtable env=new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, jndiFactory);
env.put(Context.PROVIDER_URL, providerUrl);
try {
context=new InitialContext(env);
} catch (Exception ex) {
ex.printStackTrace();
}
return context;
}
}
二.QueueBase類(QueueComsumer和QueueSupplier的基類,用於歸納一些兩類共通的東西)
package com.sitinspring.standardWeblogicJms;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
public class QueueBase{
protected QueueConnectionFactory queueConnectionFactory;
protected QueueConnection queueConnection;
protected QueueSession queueSession;
protected Queue queue;
public QueueBase(Context context){
try{
String jmsFactory=Props.get("jms.factory");
queueConnectionFactory=(QueueConnectionFactory)context.lookup(jmsFactory);
queueConnection=queueConnectionFactory.createQueueConnection();
queueSession=queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
String queueName=Props.get("queue.name");
queue=(Queue)context.lookup(queueName);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
三.QueueComsumer類(用於接收消息)
package com.sitinspring.standardWeblogicJms;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.QueueReceiver;
import javax.jms.TextMessage;
import javax.naming.Context;
public class QueueComsumer extends QueueBase implements MessageListener {
private QueueReceiver queueReceiver;
public QueueComsumer(Context context) {
super(context);
try {
queueReceiver = queueSession.createReceiver(queue);
queueReceiver.setMessageListener(this);
queueConnection.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage txtmsg = (TextMessage) message;
try {
System.out.println("I have received the TextMassage:"
+ txtmsg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
public void close() throws JMSException {
queueReceiver.close();
queueSession.close();
queueConnection.close();
}
public static void main(String[] args) {
Context context = Props.getInitialContext();
QueueComsumer queueComsumer = new QueueComsumer(context);
synchronized (queueComsumer) {
while (true) {
try {
queueComsumer.wait();
} catch (InterruptedException interruptedException) {
interruptedException.printStackTrace();
try {
queueComsumer.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
}
四.QueueSupplier類(用於發送消息)
package com.sitinspring.standardWeblogicJms;
import javax.jms.JMSException;
import javax.jms.QueueSender;
import javax.jms.TextMessage;
import javax.naming.Context;
public class QueueSupplier extends QueueBase {
private QueueSender queueSender;
public QueueSupplier(Context context) {
super(context);
try {
queueSender = queueSession.createSender(queue);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void sendMsg(String msg) throws JMSException {
TextMessage txtMsg = queueSession.createTextMessage();
txtMsg.setText(msg);
queueConnection.start();
queueSender.send(txtMsg);
}
public void close() throws JMSException {
queueSender.close();
queueSession.close();
queueConnection.close();
}
public static void main(String[] args) {
Context context = Props.getInitialContext();
QueueSupplier queueSupplier = new QueueSupplier(context);
try {
queueSupplier.sendMsg("Hello World");
System.out.println("A message have been sent!");
} catch (JMSException ex) {
ex.printStackTrace();
} finally {
try {
queueSupplier.close();
} catch (JMSException ex) {
ex.printStackTrace();
}
}
}
}
㈢ 請用白話講解ActiveMQ的用途
用途就是用來處理消息,也就是處理JMS的。消息隊列在大型電子商務類網站,如京東、淘寶、去哪兒等網站有著深入的應用,隊列的主要作用是消除高並發訪問高峰,加快網站的響應速度。
在不使用消息隊列的情況下,用戶的請求數據直接寫入資料庫,高發的情況下,會對資料庫造成巨大的壓力,同時也使得系統響應延遲加劇,但使用隊列後,用戶的請求發給隊列後立即返回。
例如:不能直接給用戶提示訂單提交成功,京東上提示:「您提交了訂單,請等待系統確認」再由消息隊列的消費者進程從消息隊列中獲取數據,非同步寫入資料庫。
由於消息隊列的服務處理速度遠快於資料庫,因此用戶的響應延遲可得到有效改善。
(3)javaactivemq擴展閱讀:
ActiveMQ主要有以下幾種使用場景
1、非同步調用。
2、一對多通信。
3、做多個系統的集成、同構、異構。
4、作為RPC的替代。
5、多個應用相互解耦。
6、作為事件驅動架構的幕後支撐。
7、為了提高系統的可伸縮性。
㈣ activemq和rabbitmq誰更適合java學習
activemq更貼切java,想學習Java推薦選擇【達內教育】,該機構擁有行業內完善的教研團隊,強大的師資力量,確保學員利益,全方位保障學員學習。
學習JAVA需要注意的地方:
1、剛學習的時候要注意看相關的入門的書。對於這類書要自己研讀,也可以把書當作一個類庫來查閱。
2、在看書的同時也要多看看網上相關的視頻。主要看一位老師的視頻,跟著老師的思路和順序走。
3、在學習的過程中建立一個目標,讓自己能夠始終堅持不放棄。
4、學習的過程中會遇到很多的困難,會產生很多疑惑。不要急躁,不要放棄,想盡一切辦法去解決。
5、不能只看理論不去動手實踐。很多想不通的問題可以通過動手實踐去解決。感興趣的話點擊此處,免費學習一下
想了解更多有關Java培訓的相關信息,推薦咨詢【達內教育】。秉承「名師出高徒、高徒拿高薪」的教學理念,是達內公司確保教學質量的重要環節。作為美國上市職業教育公司,誠信經營,拒絕虛假宣傳是該機構集團的經營理念。該機構在學員報名之前完全公開所有授課講師的授課安排及背景資料,並與學員簽訂《指定授課講師承諾書》,確保學員利益。達內IT培訓機構,試聽名額限時搶購。
㈤ Java/Android:關於ActiveMQ與MQTT的關系是什麼
mq是隊列
tt是推送
mqtt是
推送隊列
mq是單純的隊列
推送的話
不能一下子全部推送完
也是需要隊列一個一個來推送
㈥ java activemq 發送者怎麼設置clientid
在啟動activemq.bat,編輯 裡面的 java_home 參數,改成需要引用的jdk的實際路徑。或者在該文件中重新設置JAVA_HOME
㈦ Java/Android:關於ActiveMQ與MQTT的關系是什麼
實在看不下去了,網上怎麼竟是些胡說八道的呢。太坑人。MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,activemq只是apache下一個隊列項目,不僅僅支持MQTT協議,也支持其他比如AMQP等協議。MQTT是協議,協議只是定義好的規則,比如文檔也是協議。activemq只是實現了MQTT協議的一個程序
㈧ java 發送activemq 每次都需要創建一個topic嗎
jms的一個標准或者說是一個協議.通常用於企業級應用的消息傳遞.主要有topic消息(1對多),queue消息(1對1).activemq是一個jms的實現,apache出的.另外還其它的實現jboss啦啥的
㈨ Java 開源消息隊列ActiveMQ等
你這個Queue是一個在內存里的數據結構類,提供了入隊出隊方法。實例化以後可以使用。
MessageQueue是一個Java的協議,是基於標準的,ActiveMQ是這個協議標準的具體實現。這個隊列具有MessageQueue的通用功能,例如支持:發布者-訂閱者,點到點的多種方式。用於SOA的大型分布式環境,12306搶票的時候你看見有多少人排隊等待,就是使用的這個。
12306的後台伺服器是分布式的,比如接受訂票功能有100台伺服器,一個LinkedBlockingQueue的范圍只是一台機器,這樣的話就會出現多個隊,而且功能單一。這時候就會把訂票請求發送給MessageQueue ,這個東西是分布式、非同步的。。。。是完全不同的兩個東西,沒有可比性
㈩ 用java代碼如何設置activemq消息持久化到資料庫中
ActiveMQ持久化消息的二種方式;
1、持久化為文件
這個裝ActiveMQ時默認就是這種,只要設置消息為持久化就可以了。涉及到的配置和代碼有:
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
procer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);
2、持久化為Mysql
首先需要把MySql的驅動放到ActiveMQ的Lib目錄下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar
接下來修改配置文件
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>
在配置文件中的broker節點外增加
<bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
從配置中可以看出資料庫的名稱是activemq,需要手動在MySql中增加這個庫。
然後重新啟動消息隊列,會發現多了3張表
1:activemq_acks
2:activemq_lock
3:activemq_msgs