Kru*_*tik 9 java multithreading akka
我正在使用akka actor系统进行多线程处理.它在正常使用情况下工作正常.但是,Akka因致命错误而关闭了JVM.请告诉我如何配置Akka以禁用java中的"akka.jvm-exit-on-fatal-error".下面是代码.
public class QueueListener implements MessageListener {
private String _queueName=null;
public static boolean isActorinit=false;
public static ActorSystem system=null;
private ActorRef myActor;
public QueueListener(String actorId, String qName){
this._queueName = qName;
if(!isActorinit){
system=ActorSystem.create(actorId);
isActorinit=true;
}
myActor=system.actorOf( Props.create(MessageExecutor.class, qName),qName+"id");
}
/*
* (non-Javadoc)
* @see javax.jms.MessageListener#onMessage(javax.jms.Message)
*/
@Override
public void onMessage(Message msg) {
executeRequest(msg);
}
/** This method will process the message fetch by the listener.
*
* @param msg - javax.jms.Messages parameter get queue message
*/
private void executeRequest(Message msg){
String requestData=null;
try {
if(msg instanceof TextMessage){
TextMessage textMessage= (TextMessage) msg;
requestData = textMessage.getText().toString();
}else if(msg instanceof ObjectMessage){
ObjectMessage objMsg = (ObjectMessage) msg;
requestData = objMsg.getObject().toString();
}
myActor.tell(requestData, ActorRef.noSender());
} catch (JMSException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Ger*_*cso 14
application.conf在项目中创建一个文件(sr/main/resources例如)并添加以下内容:
akka {
jvm-exit-on-fatal-error = false
}
Run Code Online (Sandbox Code Playgroud)
如果您已经有一个配置文件,则无需创建新配置文件,在这种情况下,它只是添加新条目:
jvm-exit-on-fatal-error = false
Run Code Online (Sandbox Code Playgroud)
小心.让JVM在致命错误之后运行OutOfMemory通常不是一个好主意并导致严重问题.
| 归档时间: |
|
| 查看次数: |
8628 次 |
| 最近记录: |