String name,
int threadMax)
{
InjectManager beanManager = InjectManager.getCurrent();
Actor actor = (Actor) beanManager.getReference(bean);
actor.setLinkStream(this);
String jid = name;
if (jid == null || "".equals(jid))
jid = bean.getName();
if (jid == null || "".equals(jid))
jid = bean.getBeanClass().getSimpleName();
if (jid.indexOf('@') < 0)
jid = jid + '@' + getJid();
else if (jid.endsWith("@"))
jid = jid.substring(0, jid.length() - 1);
actor.setJid(jid);
Actor bamActor = actor;
// queue
if (threadMax > 0) {
ActorStream actorStream = bamActor.getActorStream();
actorStream = new HempMemoryQueue(actorStream, this, threadMax);
bamActor.setActorStream(actorStream);
}
addActor(bamActor.getActorStream());
Environment.addCloseListener(new ActorClose(bamActor));
}