├── bin
├── classes.dex
├── RabbitMQ.apk
├── resources.ap_
├── res
│ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ ├── drawable-ldpi
│ │ └── ic_launcher.png
│ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ └── drawable-xhdpi
│ │ └── ic_launcher.png
├── classes
│ └── com
│ │ └── karthi
│ │ └── rabbitmq
│ │ ├── R.class
│ │ ├── R$id.class
│ │ ├── R$attr.class
│ │ ├── R$menu.class
│ │ ├── R$style.class
│ │ ├── R$drawable.class
│ │ ├── R$layout.class
│ │ ├── R$string.class
│ │ ├── BuildConfig.class
│ │ ├── MainActivity.class
│ │ ├── MainActivity$1.class
│ │ ├── MainActivity$2.class
│ │ ├── MainActivity$3.class
│ │ ├── MessageConsumer.class
│ │ ├── MainActivity$send.class
│ │ ├── MessageConsumer$1.class
│ │ ├── MessageConsumer$2.class
│ │ ├── MessageConsumer$3.class
│ │ ├── IConnectToRabbitMQ.class
│ │ ├── MainActivity$consumerconnect.class
│ │ └── MessageConsumer$OnReceiveMessageHandler.class
├── dexedLibs
│ ├── commons-io-1.2-452fea8dc7c25950ba6cf770c79de560.jar
│ ├── commons-cli-1.1-7e17767cc0b62d1d1bfadcf3720ac996.jar
│ ├── rabbitmq-client-f876d62cf676c70af40a5e1c8d42d7bc.jar
│ └── android-support-v4-771d0b481e22808f1f23e7258aedd246.jar
└── AndroidManifest.xml
├── ic_launcher-web.png
├── libs
├── commons-io-1.2.jar
├── commons-cli-1.1.jar
├── rabbitmq-client.jar
└── android-support-v4.jar
├── res
├── drawable-hdpi
│ └── ic_launcher.png
├── drawable-ldpi
│ └── ic_launcher.png
├── drawable-mdpi
│ └── ic_launcher.png
├── drawable-xhdpi
│ └── ic_launcher.png
├── values
│ ├── strings.xml
│ └── styles.xml
├── menu
│ └── activity_main.xml
├── values-v11
│ └── styles.xml
├── values-v14
│ └── styles.xml
└── layout
│ └── activity_main.xml
├── gen
└── com
│ └── karthi
│ └── rabbitmq
│ ├── BuildConfig.java
│ └── R.java
├── project.properties
├── proguard-project.txt
├── AndroidManifest.xml
├── src
└── com
│ └── karthi
│ └── rabbitmq
│ ├── IConnectToRabbitMQ.java
│ ├── MessageConsumer.java
│ └── MainActivity.java
└── README.md
/bin/classes.dex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes.dex
--------------------------------------------------------------------------------
/bin/RabbitMQ.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/RabbitMQ.apk
--------------------------------------------------------------------------------
/bin/resources.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/resources.ap_
--------------------------------------------------------------------------------
/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/ic_launcher-web.png
--------------------------------------------------------------------------------
/libs/commons-io-1.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/libs/commons-io-1.2.jar
--------------------------------------------------------------------------------
/libs/commons-cli-1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/libs/commons-cli-1.1.jar
--------------------------------------------------------------------------------
/libs/rabbitmq-client.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/libs/rabbitmq-client.jar
--------------------------------------------------------------------------------
/libs/android-support-v4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/libs/android-support-v4.jar
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$id.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$attr.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$menu.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$menu.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$style.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$style.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$drawable.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$layout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$layout.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/R$string.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/R$string.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/BuildConfig.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity$1.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity$2.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity$3.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MessageConsumer.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MessageConsumer.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity$send.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity$send.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MessageConsumer$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MessageConsumer$1.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MessageConsumer$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MessageConsumer$2.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MessageConsumer$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MessageConsumer$3.class
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/IConnectToRabbitMQ.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/IConnectToRabbitMQ.class
--------------------------------------------------------------------------------
/bin/dexedLibs/commons-io-1.2-452fea8dc7c25950ba6cf770c79de560.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/dexedLibs/commons-io-1.2-452fea8dc7c25950ba6cf770c79de560.jar
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MainActivity$consumerconnect.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MainActivity$consumerconnect.class
--------------------------------------------------------------------------------
/bin/dexedLibs/commons-cli-1.1-7e17767cc0b62d1d1bfadcf3720ac996.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/dexedLibs/commons-cli-1.1-7e17767cc0b62d1d1bfadcf3720ac996.jar
--------------------------------------------------------------------------------
/bin/dexedLibs/rabbitmq-client-f876d62cf676c70af40a5e1c8d42d7bc.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/dexedLibs/rabbitmq-client-f876d62cf676c70af40a5e1c8d42d7bc.jar
--------------------------------------------------------------------------------
/bin/dexedLibs/android-support-v4-771d0b481e22808f1f23e7258aedd246.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/dexedLibs/android-support-v4-771d0b481e22808f1f23e7258aedd246.jar
--------------------------------------------------------------------------------
/gen/com/karthi/rabbitmq/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /** Automatically generated file. DO NOT MODIFY */
2 | package com.karthi.rabbitmq;
3 |
4 | public final class BuildConfig {
5 | public final static boolean DEBUG = true;
6 | }
--------------------------------------------------------------------------------
/bin/classes/com/karthi/rabbitmq/MessageConsumer$OnReceiveMessageHandler.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intrepidkarthi/RabbitMQ-Android-Chat/HEAD/bin/classes/com/karthi/rabbitmq/MessageConsumer$OnReceiveMessageHandler.class
--------------------------------------------------------------------------------
/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RabbitMQ
5 | Hello world!
6 | Settings
7 |
8 |
--------------------------------------------------------------------------------
/res/menu/activity_main.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-17
15 |
--------------------------------------------------------------------------------
/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
--------------------------------------------------------------------------------
/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/bin/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
15 |
16 |
17 |
27 |
28 |
35 |
36 |
--------------------------------------------------------------------------------
/src/com/karthi/rabbitmq/IConnectToRabbitMQ.java:
--------------------------------------------------------------------------------
1 | package com.karthi.rabbitmq;
2 |
3 | import java.io.IOException;
4 |
5 | import android.util.Log;
6 |
7 | import com.rabbitmq.client.Channel;
8 | import com.rabbitmq.client.Connection;
9 | import com.rabbitmq.client.ConnectionFactory;
10 |
11 | /**
12 | * Base class for objects that connect to a RabbitMQ Broker
13 | */
14 | public abstract class IConnectToRabbitMQ {
15 | public String mServer;
16 | public String mExchange;
17 |
18 | protected Channel mModel = null;
19 | protected Connection mConnection;
20 |
21 | protected boolean Running ;
22 |
23 | protected String MyExchangeType ;
24 |
25 | /**
26 | *
27 | * @param server The server address
28 | * @param exchange The named exchange
29 | * @param exchangeType The exchange type name
30 | */
31 | public IConnectToRabbitMQ(String server, String exchange, String exchangeType)
32 | {
33 | mServer = server;
34 | mExchange = exchange;
35 | MyExchangeType = exchangeType;
36 | }
37 |
38 | public void Dispose()
39 | {
40 | Running = false;
41 |
42 | try {
43 | if (mConnection!=null)
44 | mConnection.close();
45 | if (mModel != null)
46 | mModel.abort();
47 | } catch (IOException e) {
48 | // TODO Auto-generated catch block
49 | e.printStackTrace();
50 | }
51 |
52 | }
53 |
54 | /**
55 | * Connect to the broker and create the exchange
56 | * @return success
57 | */
58 | public boolean connectToRabbitMQ()
59 | {
60 | if(mModel!= null && mModel.isOpen() )//already declared
61 | return true;
62 | try
63 | {
64 | ConnectionFactory connectionFactory = new ConnectionFactory();
65 | connectionFactory.setHost(mServer);
66 | mConnection = connectionFactory.newConnection();
67 | mModel = mConnection.createChannel();
68 | mModel.exchangeDeclare(mExchange, MyExchangeType, true);
69 |
70 | return true;
71 | }
72 | catch (Exception e)
73 | {
74 | e.printStackTrace();
75 | return false;
76 | }
77 | }
78 | }
--------------------------------------------------------------------------------
/gen/com/karthi/rabbitmq/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 |
8 | package com.karthi.rabbitmq;
9 |
10 | public final class R {
11 | public static final class attr {
12 | }
13 | public static final class drawable {
14 | public static final int ic_launcher=0x7f020000;
15 | }
16 | public static final class id {
17 | public static final int menu_settings=0x7f070003;
18 | public static final int out2=0x7f070002;
19 | public static final int out3=0x7f070001;
20 | public static final int output=0x7f070000;
21 | }
22 | public static final class layout {
23 | public static final int activity_main=0x7f030000;
24 | }
25 | public static final class menu {
26 | public static final int activity_main=0x7f060000;
27 | }
28 | public static final class string {
29 | public static final int app_name=0x7f040000;
30 | public static final int hello_world=0x7f040001;
31 | public static final int menu_settings=0x7f040002;
32 | }
33 | public static final class style {
34 | /**
35 | Base application theme, dependent on API level. This theme is replaced
36 | by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
37 |
38 |
39 | Theme customizations available in newer API levels can go in
40 | res/values-vXX/styles.xml, while customizations related to
41 | backward-compatibility can go here.
42 |
43 |
44 | Base application theme for API 11+. This theme completely replaces
45 | AppBaseTheme from res/values/styles.xml on API 11+ devices.
46 |
47 | API 11 theme customizations can go here.
48 |
49 | Base application theme for API 14+. This theme completely replaces
50 | AppBaseTheme from BOTH res/values/styles.xml and
51 | res/values-v11/styles.xml on API 14+ devices.
52 |
53 | API 14 theme customizations can go here.
54 | */
55 | public static final int AppBaseTheme=0x7f050000;
56 | /** Application theme.
57 | All customizations that are NOT specific to a particular API-level can go here.
58 | */
59 | public static final int AppTheme=0x7f050001;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | RabbitMQ-Android-Chat
2 | =====================
3 |
4 | RabbitMQ-Android-Chat
5 |
6 | I spent more than 12 hours in setting up RabbitMQ server in Ubuntu and creating an Android app which communicates from server and also communicates with other devices through the server. So I thought it will be good to share the whole information I found in a single place. I found information from various sources.
7 |
8 | http://simonwdixon.wordpress.com/2011/06/03/getting-started-with-rabbitmq-on-android-part-1/
9 |
10 | http://kamrana.wordpress.com/2012/05/10/android-chat-application-using-rabbitmq/
11 |
12 | http://www.danielscottlawrence.com/using-rabbitmq-management-plugin-on-ubuntu-12-04/
13 |
14 | And as usual from http://www.stackoverflow.com
15 |
16 | I am using Ubuntu 12.04. This tutorial is completely based on this. So I am not sure how will it work on Windows or Mac OS.
17 |
18 | A. Install the latest version of RabbitMQ as per the instruction from here
19 |
20 | Add the following line to your /etc/apt/sources.list:
21 | deb http://www.rabbitmq.com/debian/ testing main
22 | (Please note that the word testing in this line refers to the state of our release of RabbitMQ, not any particular Debian distribution. You can use it with Debian stable, testing or unstable, as well as with Ubuntu. We describe the release as “testing” to emphasise that we release somewhat frequently.)
23 |
24 | (optional) To avoid warnings about unsigned packages, add our public key to your trusted key list using apt-key(8):
25 | wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
26 | sudo apt-key add rabbitmq-signing-key-public.asc
27 | Run apt-get update.
28 | Install packages as usual; for instance,
29 | sudo apt-get install rabbitmq-server
30 | B. It is better to have a GUI client. It comes along with the installation. We just need to enable it. To enable the plugin follow the steps given below.
31 |
32 | Install rabbitmq-server
33 |
34 | $ sudo apt-get install rabbitmq-server
35 |
36 | Enable the rabbitmq-management plugin
37 |
38 | $ sudo /usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/sbin/rabbitmq-plugins enable rabbitmq_management
39 | The following plugins have been enabled:
40 | mochiweb
41 | webmachine
42 | rabbitmq_mochiweb
43 | amqp_client
44 | rabbitmq_management_agent
45 | rabbitmq_management
46 |
47 | Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
48 | Restart rabbitmq-server for the changes to take affect.
49 |
50 | $ sudo service rabbitmq-server restart
51 | Restarting rabbitmq-server: SUCCESS
52 | rabbitmq-server.
53 | Checked the newly enabled plugins
54 |
55 | $ sudo /usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/sbin/rabbitmq-plugins list
56 | [e] amqp_client 0.0.0
57 | [ ] eldap 0.0.0-git
58 | [ ] erlando 0.0.0
59 | [e] mochiweb 1.3-rmq0.0.0-git
60 | [ ] rabbitmq_auth_backend_ldap 0.0.0
61 | [ ] rabbitmq_auth_mechanism_ssl 0.0.0
62 | [ ] rabbitmq_consistent_hash_exchange 0.0.0
63 | [ ] rabbitmq_federation 0.0.0
64 | [ ] rabbitmq_jsonrpc 0.0.0
65 | [ ] rabbitmq_jsonrpc_channel 0.0.0
66 | [ ] rabbitmq_jsonrpc_channel_examples 0.0.0
67 | [E] rabbitmq_management 0.0.0
68 | [e] rabbitmq_management_agent 0.0.0
69 | [ ] rabbitmq_management_visualiser 0.0.0
70 | [e] rabbitmq_mochiweb 0.0.0
71 | [ ] rabbitmq_shovel 0.0.0
72 | [ ] rabbitmq_shovel_management 0.0.0
73 | [ ] rabbitmq_stomp 0.0.0
74 | [ ] rabbitmq_tracing 0.0.0
75 | [ ] rfc4627_jsonrpc 0.0.0-git
76 | [e] webmachine 1.7.0-rmq0.0.0-hg
77 | I could new access the mangement plugin via:
78 |
79 | http://192.168.1.2:55672/#/
80 |
81 | Username: guest
82 | Password: guest
83 | If 192.168.1.2 doesn’t work try 192.168.1.*
84 |
85 | run the app after this :)
86 |
--------------------------------------------------------------------------------
/src/com/karthi/rabbitmq/MessageConsumer.java:
--------------------------------------------------------------------------------
1 | package com.karthi.rabbitmq;
2 |
3 | import java.io.IOException;
4 |
5 | import android.os.Handler;
6 | import android.util.Log;
7 |
8 | import com.rabbitmq.client.QueueingConsumer;
9 |
10 | /**
11 | *Consumes messages from a RabbitMQ broker
12 | *
13 | */
14 | public class MessageConsumer extends IConnectToRabbitMQ{
15 |
16 | public MessageConsumer(String server, String exchange, String exchangeType) {
17 | super(server, exchange, exchangeType);
18 | }
19 |
20 | //The Queue name for this consumer
21 | private String mQueue;
22 | private QueueingConsumer MySubscription;
23 |
24 | //last message to post back
25 | private byte[] mLastMessage;
26 |
27 | // An interface to be implemented by an object that is interested in messages(listener)
28 | public interface OnReceiveMessageHandler{
29 |
30 | public void onReceiveMessage(byte[] message);
31 | };
32 |
33 | //A reference to the listener, we can only have one at a time(for now)
34 | private OnReceiveMessageHandler mOnReceiveMessageHandler;
35 |
36 | /**
37 | *
38 | * Set the callback for received messages
39 | * @param handler The callback
40 | */
41 | public void setOnReceiveMessageHandler(OnReceiveMessageHandler handler){
42 | mOnReceiveMessageHandler = handler;
43 | };
44 |
45 | private Handler mMessageHandler = new Handler();
46 | private Handler mConsumeHandler = new Handler();
47 |
48 | // Create runnable for posting back to main thread
49 | final Runnable mReturnMessage = new Runnable() {
50 | public void run() {
51 | mOnReceiveMessageHandler.onReceiveMessage(mLastMessage);
52 | }
53 | };
54 |
55 | final Runnable mConsumeRunner = new Runnable() {
56 | public void run() {
57 | Consume();
58 | }
59 | };
60 |
61 | /**
62 | * Create Exchange and then start consuming. A binding needs to be added before any messages will be delivered
63 | */
64 | @Override
65 | public boolean connectToRabbitMQ()
66 | {
67 | if(super.connectToRabbitMQ())
68 | {
69 |
70 | try {
71 | mQueue = mModel.queueDeclare().getQueue();
72 | MySubscription = new QueueingConsumer(mModel);
73 | mModel.basicConsume(mQueue, false, MySubscription);
74 | } catch (IOException e) {
75 | e.printStackTrace();
76 | return false;
77 | }
78 | if (MyExchangeType == "fanout")
79 | AddBinding("");//fanout has default binding
80 |
81 | Running = true;
82 | mConsumeHandler.post(mConsumeRunner);
83 |
84 | return true;
85 | }
86 | return false;
87 | }
88 |
89 | /**
90 | * Add a binding between this consumers Queue and the Exchange with routingKey
91 | * @param routingKey the binding key eg GOOG
92 | */
93 | public void AddBinding(String routingKey)
94 | {
95 | try {
96 | mModel.queueBind(mQueue, mExchange, routingKey);
97 | } catch (IOException e) {
98 | // TODO Auto-generated catch block
99 | e.printStackTrace();
100 | }
101 | }
102 |
103 | /**
104 | * Remove binding between this consumers Queue and the Exchange with routingKey
105 | * @param routingKey the binding key eg GOOG
106 | */
107 | public void RemoveBinding(String routingKey)
108 | {
109 | try {
110 | mModel.queueUnbind(mQueue, mExchange, routingKey);
111 | } catch (IOException e) {
112 | // TODO Auto-generated catch block
113 | e.printStackTrace();
114 | }
115 | }
116 |
117 | private void Consume()
118 | {
119 | Thread thread = new Thread()
120 | {
121 |
122 | @Override
123 | public void run() {
124 | while(Running){
125 | QueueingConsumer.Delivery delivery;
126 | try {
127 | delivery = MySubscription.nextDelivery();
128 | mLastMessage = delivery.getBody();
129 | Log.v("mLastMessage ", mLastMessage.toString());
130 | mMessageHandler.post(mReturnMessage);
131 | try {
132 | mModel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
133 | } catch (IOException e) {
134 | e.printStackTrace();
135 | }
136 | } catch (InterruptedException ie) {
137 | ie.printStackTrace();
138 | }
139 | }
140 | }
141 | };
142 | thread.start();
143 |
144 | }
145 |
146 | public void dispose(){
147 | Running = false;
148 | }
149 | }
150 |
--------------------------------------------------------------------------------
/src/com/karthi/rabbitmq/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.karthi.rabbitmq;
2 |
3 | import java.io.UnsupportedEncodingException;
4 |
5 |
6 | import com.karthi.rabbitmq.R;
7 | import com.karthi.rabbitmq.MessageConsumer.OnReceiveMessageHandler;
8 | import com.rabbitmq.client.Channel;
9 | import com.rabbitmq.client.Connection;
10 | import com.rabbitmq.client.ConnectionFactory;
11 |
12 | import android.os.AsyncTask;
13 | import android.os.Bundle;
14 | import android.app.Activity;
15 | import android.text.format.Formatter;
16 | import android.util.Log;
17 | import android.view.KeyEvent;
18 | import android.view.Menu;
19 | import android.view.View;
20 | import android.view.View.OnKeyListener;
21 | import android.widget.EditText;
22 | import android.widget.TextView;
23 | import android.widget.Toast;
24 |
25 | public class MainActivity extends Activity {
26 | private MessageConsumer mConsumer;
27 | private TextView mOutput;
28 | private String QUEUE_NAME = "myqueue";
29 | private String EXCHANGE_NAME = "test";
30 | private String message = "";
31 | private String name = "";
32 |
33 | /** Called when the activity is first created. */
34 | @Override
35 | public void onCreate(Bundle savedInstanceState) {
36 | super.onCreate(savedInstanceState);
37 | setContentView(R.layout.activity_main);
38 | Toast.makeText(MainActivity.this, "RabbitMQ Chat Service!",
39 | Toast.LENGTH_LONG).show();
40 |
41 | final EditText etv1 = (EditText) findViewById(R.id.out3);
42 | etv1.setOnKeyListener(new OnKeyListener() {
43 | public boolean onKey(View v, int keyCode, KeyEvent event) {
44 | // If the event is a key-down event on the "enter" button
45 | if ((event.getAction() == KeyEvent.ACTION_DOWN)
46 | && (keyCode == KeyEvent.KEYCODE_ENTER)) {
47 | // Perform action on key press
48 | name = etv1.getText().toString();
49 | etv1.setText("");
50 | etv1.setVisibility(View.GONE);
51 | return true;
52 | }
53 | return false;
54 | }
55 | });
56 |
57 | final EditText etv = (EditText) findViewById(R.id.out2);
58 | etv.setOnKeyListener(new OnKeyListener() {
59 | public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
60 | // If the event is a key-down event on the "enter" button
61 | if ((arg2.getAction() == KeyEvent.ACTION_DOWN)
62 | && (arg1 == KeyEvent.KEYCODE_ENTER)) {
63 | // Perform action on key press
64 | message = name + ": " + etv.getText().toString();
65 | new send().execute(message);
66 | etv.setText("");
67 | return true;
68 | }
69 | return false;
70 | }
71 | });
72 |
73 | // The output TextView we'll use to display messages
74 | mOutput = (TextView) findViewById(R.id.output);
75 |
76 | // Create the consumer
77 | mConsumer = new MessageConsumer("10.0.2.2", "test", "fanout");
78 | new consumerconnect().execute();
79 | // register for messages
80 | mConsumer.setOnReceiveMessageHandler(new OnReceiveMessageHandler() {
81 |
82 | public void onReceiveMessage(byte[] message) {
83 | String text = "";
84 | try {
85 | text = new String(message, "UTF8");
86 | } catch (UnsupportedEncodingException e) {
87 | e.printStackTrace();
88 | }
89 |
90 | mOutput.append("\n" + text);
91 | }
92 | });
93 |
94 |
95 | }
96 |
97 | private class send extends AsyncTask {
98 |
99 | @Override
100 | protected Void doInBackground(String... Message) {
101 | try {
102 |
103 | ConnectionFactory factory = new ConnectionFactory();
104 | factory.setHost("10.0.2.2");
105 |
106 | // my internet connection is a bit restrictive so I have use an
107 | // external server
108 | // which has RabbitMQ installed on it. So I use "setUsername"
109 | // and "setPassword"
110 | factory.setUsername("guest");
111 | factory.setPassword("guest");
112 | //factory.setVirtualHost("karthi");
113 | factory.setPort(5672);
114 | System.out.println(""+factory.getHost()+factory.getPort()+factory.getRequestedHeartbeat()+factory.getUsername());
115 | Connection connection = factory.newConnection();
116 | Channel channel = connection.createChannel();
117 |
118 | channel.exchangeDeclare(EXCHANGE_NAME, "fanout", true);
119 | channel.queueDeclare(QUEUE_NAME, false, false, false, null);
120 | String tempstr = "";
121 | for (int i = 0; i < Message.length; i++)
122 | tempstr += Message[i];
123 |
124 | channel.basicPublish(EXCHANGE_NAME, QUEUE_NAME, null,
125 | tempstr.getBytes());
126 |
127 | channel.close();
128 |
129 | connection.close();
130 |
131 | } catch (Exception e) {
132 | // TODO: handle exception
133 | e.printStackTrace();
134 | }
135 | // TODO Auto-generated method stub
136 | return null;
137 | }
138 |
139 | }
140 |
141 |
142 | private class consumerconnect extends AsyncTask {
143 |
144 | @Override
145 | protected Void doInBackground(String... Message) {
146 | try {
147 |
148 |
149 |
150 | // Connect to broker
151 | mConsumer.connectToRabbitMQ();
152 |
153 |
154 |
155 | } catch (Exception e) {
156 | // TODO: handle exception
157 | e.printStackTrace();
158 | }
159 | // TODO Auto-generated method stub
160 | return null;
161 | }
162 |
163 | }
164 |
165 | @Override
166 | protected void onResume() {
167 | super.onPause();
168 | new consumerconnect().execute();
169 | }
170 |
171 | @Override
172 | protected void onPause() {
173 | super.onPause();
174 | mConsumer.dispose();
175 | }
176 | }
--------------------------------------------------------------------------------