学习akka之helloword

0.maven依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.jikuan.zjk</groupId>
  <artifactId>akka</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>akka</name>
  <url>http://maven.apache.org</url>

  <properties>
    <akka.version>2.4.12</akka.version>
  </properties>

  <dependencies>
  	<!-- akka -->
		<dependency>
			<groupId>com.typesafe.akka</groupId>
			<artifactId>akka-actor_2.12</artifactId>
			<version>${akka.version}</version>
		</dependency>
		<dependency>
			<groupId>com.typesafe.akka</groupId>
			<artifactId>akka-cluster-tools_2.12</artifactId>
			<version>${akka.version}</version>
		</dependency>
		<dependency>
			<groupId>com.typesafe.akka</groupId>
			<artifactId>akka-slf4j_2.12</artifactId>
			<version>${akka.version}</version>
		</dependency>
		<dependency>
			<groupId>com.typesafe.akka</groupId>
			<artifactId>akka-testkit_2.12</artifactId>
			<version>${akka.version}</version>
		</dependency>
	  <!-- https://mvnrepository.com/artifact/org.scala-lang.modules/scala-java8-compat_2.11 -->
		<dependency>
	    <groupId>org.scala-lang.modules</groupId>
	    <artifactId>scala-java8-compat_2.11</artifactId>
	    <version>0.8.0</version>
		</dependency>
		
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


1.创建消息

package com.jikuan.zjk.message;

/**
 * MapMesssage class
 * jikuan.zjk
 */
public class MapMessage {
  private final String key;
  private final Object value;
  public MapMessage(String key, Object value) {
    this.key = key;
    this.value = value;
  }
  
  public String getKey() {
    return key;
  }
  public Object getValue() {
    return value;
  }
}

2.创建Actor

package com.jikuan.zjk.actor;

import java.util.HashMap;
import java.util.Map;

import com.jikuan.zjk.message.MapMessage;

import akka.actor.AbstractActor;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import akka.japi.pf.ReceiveBuilder;

/*
*HelloWordActor
*jikuan.zjk
*/

public class HelloWordActor extends AbstractActor {
  protected final LoggingAdapter log = Logging.getLogger(context().system(), this);
  public final Map<String, Object> map = new HashMap<String, Object>();
  
  private HelloWordActor() {
    receive(ReceiveBuilder
        .match(MapMessage.class, message -> {
            log.info("Received Message: {}",message);
            map.put(message.getKey(), message.getValue());
          
        })
        .matchAny(o -> log.info("received unknow message: {}",o))
        .build()
      );
  }
}

3.创建测试用例

package com.jikuan.zjk.akka;
/*
*HelloWordTest class
*jikuan.zjk
*/

import com.jikuan.zjk.actor.HelloWordActor;
import com.jikuan.zjk.message.MapMessage;

import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Props;
import akka.testkit.TestActorRef;

import static org.junit.Assert.assertEquals;

import org.junit.Test;



public class HelloWordTest {
  ActorSystem system = ActorSystem.create();
  
  @Test
  public void sendHelloWordToHelloWordActor() {
    TestActorRef<HelloWordActor> actorRef = TestActorRef.create(system, Props.create(HelloWordActor.class));
    actorRef.tell(new MapMessage("akka", "HelloWord"), ActorRef.noSender());
    HelloWordActor helloWordActor = actorRef.underlyingActor();
    System.out.println("get value: " + helloWordActor.map.get("akka"));
    assertEquals(helloWordActor.map.get("akka"),"HelloWord");
  }
} 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值