Comments (5)
I used Lyra library but when the client lost connection, it still create a new connections.
This is my subiscribe method:
`
private void subscribe(final Handler handler)
{
subscribeThread = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
//connection = connectionFactory.newConnection();
connection = MySingletonConnection.getInstance().getConnection();
//connection = Connections.create(options, config);
Channel channel = connection.createChannel();
// Declare a queue and bind it to an exchange.
com.rabbitmq.client.AMQP.Queue.DeclareOk q = channel.queueDeclare("manager2box-"+ROUTING_KEY, true, false, true, null);
channel.queueBind(q.getQueue(), EXCHANGE, ROUTING_KEY);
// Create the QueueingConsumer and have it consume from the queue
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(q.getQueue(), false, consumer);
while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
Log.d(TAG, message);
Message msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("commandBundle", message);
msg.setData(bundle);
handler.sendMessage(msg);
}
} catch (InterruptedException e) {
Log.d(TAG, "InterruptedException");
e.printStackTrace();
break;
} catch (Exception e1) {
Log.d(TAG, "Connection broken: " + e1.getClass().getName());
e1.printStackTrace();
try {
Thread.sleep(5000); //sleep and then try again
} catch (InterruptedException e) {
Log.d(TAG, "InterruptedException");
e.printStackTrace();
break;
}
}
}
}
});
subscribeThread.start();
}
This is my SingletonConnection:
public class MySingletonConnection{
public static final MySingletonConnection INSTANCE = new MySingletonConnection();
private static Connection connection;
private final String TAG = "MySingletonConnection";
private final String EXCHANGE = "manager2box";
private final String USERNAME = "manager";
private final String PASSWORD = "MGXxXq72HscXzakR";
//private final String HOST = "192.168.1.147";
private final String HOST = "portal.seafy.me";
private final String ROUTING_KEY = Utils.getIPAddress();
private Config config;
private ConnectionOptions options;
private MySingletonConnection(){
//Lyra config
config = new Config()
.withConnectionListeners()
.withRecoveryPolicy(RecoveryPolicies.recoverAlways())
.withRetryPolicy(new RetryPolicy()
.withMaxAttempts(20)
.withInterval(Duration.seconds(5))
.withMaxDuration(Duration.minutes(5)));
//Lyra option config for connection
options = new ConnectionOptions().withUsername(USERNAME)
.withRequestedHeartbeat(Duration.seconds(30))
.withPassword(PASSWORD)
.withHost(HOST)
.withPort(5672);
try {
connection = Connections.create(options, config);
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
public static MySingletonConnection getInstance(){
return INSTANCE;
}
public Connection getConnection( ) {
return connection;
}
}
```
`
from lyra.
Are you sure that opening new connections and channels in a while(true)
loop is really necessary?
Any client with that kind of code would produce a connection storm.
from lyra.
This should be closed as it has nothing to do with Lyra. The same question was answered in a RabbitMQ Java client issue and on rabbitmq-users.
from lyra.
from lyra.
Duplicate of #75, addressed by #82.
from lyra.
Related Issues (20)
- Reconnection after RabbitMQ shutdown is not successful HOT 5
- when java.net.UnknownHostException is thrown the recovery failed
- What about moving to the latest 'amqp-client' version?
- Forgotten copying of automaticRecovery in ConnectionOptions.copy() HOT 1
- Documentation on ConnectionFactory used in ConnectionOptions HOT 2
- support withUri() in ConnectionOptions HOT 5
- Moving to latest RabbitMQ Java Client 4.0 HOT 5
- Why to copy ConnectionFactory on each create HOT 7
- No communication after recovery HOT 4
- Consumers not getting messages after broker restart HOT 8
- Connection name is not passed HOT 8
- Lyra recover mechanism can prevent from the JVM to shutdown HOT 6
- Get rid of static executor service HOT 2
- Rapid growth of connections when network conditions are unreliable HOT 3
- retryableExceptions configuration and implementation HOT 3
- Use a `Predicate` for retry exception strategy
- Getting Rabbitmq HeartBeat Exception HOT 3
- Lyra is no longer under active development. HOT 1
- Connection recovery fails and gives up even though recovery policy is recoverAlways() HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lyra.