0
我想方法等待,直到偵聽器的事件發生。我應該如何實現這一目標? 在我的計劃,我想循環,直到事件的結果滿足一些條件,否則,我會無休止地發送請求如何暫停,直到事件發生在activeMQ
public void run(double r, double sigma, double strike, double s0, String t, int d) throws JMSException, InterruptedException {
double actureError = 0.0;
double epsilon = 0.00001;
// iterate until the relative error rate is less than requested (converged)
while ((actureError < epsilon) || (actureError > ESTIMATION_ERROR)) {
sendRequest(r, sigma, strike, s0, t, d);
Topic topic = session.createTopic("topic");
MessageConsumer consumer = session.createConsumer(topic);
OptionMessageListener listener = new OptionMessageListener(task);
consumer.setMessageListener(listener);
double absoluteError = y * task.getSigma()
/Math.sqrt(task.getCount());
actureError = absoluteError/(task.getAvg() + epsilon);
}
return task.getAvg() * Math.exp(-r * 252);
}
public void sendRequest(double r, double sigma, double strike, double s0, String t, int d) throws JMSException {
// send request to the client
MessageProducer producer = session.createProducer(queue);
OptionRequest request = new OptionRequest(r, sigma, strike, s0, t, d, null);
ObjectMessage requestMessage = session.createObjectMessage(request);
producer.send(requestMessage);
}
public class OptionMessageListener implements MessageListener {
private Task task;
public OptionMessageListener(Task task) {
this.task = task;
}
@Override
public void onMessage(Message message) {
if (message instanceof ObjectMessage) {
ObjectMessage objectMessage = (ObjectMessage) message;
try {
Result result = (Result) objectMessage.getObject();
double payout = result.getPayout();
task.addPayout(payout);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
我是新來的ActiveMQ,誰能幫助我?謝謝!