This minimal application is contained in a single class, and it has a couple public methods, producer() and consumer(), that implement a very raw direct exchange where a single message is produced and consumed. They both call the private method getFactory() instead of creating a standard ConnectionFactory object. And this the interesting part of the application:
static private final String HOST = "127.0.0.1"; // 1 static private final int PORT = 6391; // 2 static private final String V_HOST = "test"; // 3 static private final String USER = "user"; // 4 static private final String PASSWORD = "password"; //... private ConnectionFactory getFactory() { ConnectionFactory factory = new ConnectionFactory(); // 5 factory.setHost(HOST); // 6 factory.setPort(PORT); factory.setVirtualHost(V_HOST); factory.setUsername(USER); factory.setPassword(PASSWORD); System.out.println("Starting on " + factory.getHost() + ':' + factory.getPort() + " [" + factory.getVirtualHost() + "] for " + factory.getUsername()); return factory; }1. This is a puny testing application running on the same machine of the broker, so localhost is used.
2. Default port for RabbitMQ is 5672, but here we are using a different one.
3. We don't use the default virtual host ("/") but our specific "test" one.
4. The default user is "guest" (with password "guest"), here we are using instead our user expressly created for our v-host.
5. A default connection factory works fine for a default setting of the RabbitMQ broker. For make it work for our customized broker, we have to explicitly set all the changed properties.
6. Actually, the host is localhost, as set by default in the ConnectionFactory ctor, but let's assume we'll change it soon, as it usually happens in real life.
Obviously all those properties should be be easily configured, stored on mass memory and fetched by the application at startup, or passed as argument from the command line, but this is not the point of this post.
The rest of the class code is not very interesting, but if you want to see the full Java class, you can get it from github.
No comments:
Post a Comment