- Notifications
You must be signed in to change notification settings - Fork0
base64coder/websocket-stomp
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
| layout | title | date | comments | categories |
|---|---|---|---|---|
post | java/MQ/install rabbitmq on debian and how to using it | 2017-06-23 10:07:03 +0800 | true |
- add sources.list
echo'deb http://www.rabbitmq.com/debian/ testing main'| sudo tee /etc/apt/sources.list.d/rabbitmq.listwget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc| sudo apt-key add -
- update & upgrade System
apt-get updateapt-get upgrade
- install rabbitmq-server
apt-get install rabbitmq-server
- list default user list
rabbitmqctl list_users
2.list default vhosts
rabbitmqctl list_vhosts
- add a new user: liujun & set password & add to administrator group
rabbitmqctl add_user liujun**********rabbitmqctl set_permissions -p / liujun".*"".*"".*"rabbitmqctl set_user_tags liujun administratorrabbitmqctl list_users
enable plugin: amqp_client rabbitmq_jms_topic_exchange rabbitmq_management rabbitmq_stomp rabbitmq_web_mqtt rabbitmq_web_stomp sockjs
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.10sbin/rabbitmq-pluginsenable --offline --online amqp_client rabbitmq_jms_topic_exchange rabbitmq_management rabbitmq_stomp rabbitmq_web_mqtt rabbitmq_web_stomp sockjs/etc/init.d/rabbitmq-server restartnetstat -ant| grep 672tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTENtcp6 0 0 :::5672 :::* LISTEN
echo [].> /etc/rabbitmq/rabbitmq.config
/etc/init.d/rabbitmq-server restart
- create a websocket message broker
@Configuration@EnableWebSocketMessageBrokerpublicclassWebSocketConfigextendsAbstractWebSocketMessageBrokerConfigurer {@OverridepublicvoidconfigureMessageBroker(MessageBrokerRegistryconfig) {config.enableStompBrokerRelay("/topic/");config.setApplicationDestinationPrefixes("/app");}@OverridepublicvoidregisterStompEndpoints(StompEndpointRegistryregistry) {registry.addEndpoint("/quakesep").withSockJS();//endpoint}}
- create a controller & template
@ControllerpublicclassDashboardController {@RequestMapping(value = {"","/"},method =RequestMethod.GET)publicStringindex(){return"dashboard/index";}}
<!DOCTYPE html><htmllang="en"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"/><title></title><linkrel="stylesheet"th:href="@{/css/bootstrap.min.css}"href="../../static/css/bootstrap.min.css"/><linkrel="stylesheet"th:href="@{/css/bootstrap-theme.css}"href="../../static/css/bootstrap-theme.css"/><linkrel="stylesheet"th:href="@{/css/application.css}"href="../../static/css/application.css"/></head><body><scriptth:src="@{/js/jquery-1.7.2.js}"src="../../js/jquery-1.7.2.js"></script><scriptth:src="@{/js/moment.min.js}"src="../../js/moment.min.js"></script></body></html>
- create gateway xml & rabbit config
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:int="http://www.springframework.org/schema/integration"xmlns:int-http="http://www.springframework.org/schema/integration/http"xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp"xsi:schemaLocation="http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/integration/amqp http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsdhttp://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd"> <importresource="rabbit-context.xml"/><!--<int:inbound-channel-adapter channel="quakeinfotrigger" expression="''">--><!--<int:poller fixed-delay="1000"/>--><!--</int:inbound-channel-adapter>--><!--<int:channel/>--><!--<int:channel/>--><!--<int-http:outbound-gateway--><!--request-channel="quakeinfotrigger"--><!--url="http://localhost:8180/stomp/quake/json"--><!--http-method="GET"--><!--expected-response-type="java.lang.String"--><!--charset="UTF-8"--><!--reply-channel="quakeinfo">--><!--</int-http:outbound-gateway>--><!--<int-amqp:outbound-channel-adapter amqp-template="amqpTemplate" channel="quakeinfo"/>--></beans>
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:rabbit="http://www.springframework.org/schema/rabbit"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd"> <rabbit:connection-factoryid="connectionFactory"username="liujun"host="localhost"password="*********"port="5672"/> <rabbit:templateid="amqpTemplate"connection-factory="connectionFactory"exchange="amq.topic"routing-key="quakes.all"channel-transacted="true"/> <rabbit:adminconnection-factory="connectionFactory"/> <rabbit:topic-exchangename="amq.topic"/></beans>
- config application
@ComponentScan@EnableAutoConfiguration@ImportResource("classpath:httpgateway.xml")publicclassMain {publicstaticvoidmain(String[]args) {SpringApplication.run(Main.class,args);}}
because I using node js to send message into broker & i using amqplib, so:
npm i amqplib --save
varamqp=require('./node_modules/amqplib/callback_api');amqp.connect('amqp://liujun:*************@localhost',function(err,conn){conn.createChannel(function(err,ch){if(err){setTimeout(function(){conn.close();process.exit(0)},500);}setInterval(function(){pub(ch);},1000);});functionpub(ch){varex='amq.topic';varkey='quakes.all';varmsg=newDate().getTime().toString();ch.assertExchange(ex,'topic',{durable:true});ch.publish(ex,key,newBuffer(msg));report(key,msg);}functionreport(key,msg){console.log(" [x] Sent %s:'%s'",key,msg);}});
inject stomp.js & sockjs into html template:
<scriptth:src="@{/js/sockjs-0.3.4.js}"src="../../js/sockjs-0.3.4.js"></script><scriptth:src="@{/js/stomp.js}"src="../../js/stomp.js"></script>
/*<![CDATA[*/$(document).ready(function(){connect();});varstompClient=null;functionconnect(){varsocket=newSockJS('/quakesep');//连接endpointstompClient=Stomp.over(socket);stompClient.connect({},function(frame){console.log('Connected: '+frame);stompClient.subscribe('/topic/quakes.all',function(message){showQuakeInfo(message.body);});});}functionshowQuakeInfo(quakeCollectionJson){varquakeCollection=$.parseJSON(quakeCollectionJson);varname=quakeCollection.nameconsole.log(name);}/*]]>*/
About
No description or website provided.
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published