akka 2.3.11 例項
package test
import java.io.File
import scala.concurrent.duration._
import akka.actor.Actor
import akka.actor.ActorIdentity
import akka.actor.ActorRef
import akka.actor.Identify
import akka.actor.ReceiveTimeout
import akka.actor.Terminated
import akka.actor.Props
import akka.actor.ActorSystem
import com.typesafe.config.ConfigFactory
object Sender {
def main(args: Array[String]): Unit = {
val file =new File("D:/calculator.conf");
System.out.println(file);
val system = ActorSystem("Sys", ConfigFactory.parseFile(file))
val remoteHostPort = if (args.length >= 1) args(0) else "127.0.0.1:2553"
val remotePath = s"akka.tcp://[email protected]$remoteHostPort/user/rcv"
val totalMessages = if (args.length >= 2) args(1).toInt else 500000
val burstSize = if (args.length >= 3) args(2).toInt else 5000
val payloadSize = if (args.length >= 4) args(3).toInt else 100
system.actorOf(Sender.props(remotePath, totalMessages, burstSize, payloadSize), "snd" )
}
def props(path: String, totalMessages: Int, burstSize: Int, payloadSize: Int): Props =
Props(new Sender(path, totalMessages, burstSize, payloadSize))
private case object Warmup
case object Shutdown
sealed trait Echo
case object Start extends Echo
case object Done extends Echo
case class Continue(remaining: Int, startTime: Long, burstStartTime: Long, n: Int)
extends Echo
}
class Sender(path: String, totalMessages: Int, burstSize: Int, payloadSize: Int) extends Actor {
import Sender._
val payload: Array[Byte] = Vector.fill(payloadSize)("a").mkString.getBytes
var startTime = 0L
var maxRoundTripMillis = 0L
context.setReceiveTimeout(3.seconds)
sendIdentifyRequest()
def sendIdentifyRequest(): Unit =
context.actorSelection(path) ! Identify(path)
def receive = identifying
def identifying: Receive = {
case ActorIdentity(`path`, Some(actor)) =>
context.watch(actor)
context.become(active(actor))
context.setReceiveTimeout(Duration.Undefined)
self ! Warmup
case ActorIdentity(`path`, None) => println(s"Remote actor not available: $path")
case ReceiveTimeout => sendIdentifyRequest()
}
def active(actor: ActorRef): Receive = {
case Warmup =>
sendBatch(actor, burstSize)
actor ! Start
case Start =>
println(s"Starting benchmark of $totalMessages messages with burst size $burstSize and payload size $payloadSize")
startTime = System.nanoTime
val remaining = sendBatch(actor, totalMessages)
if (remaining == 0)
actor ! Done
else
actor ! Continue(remaining, startTime, startTime, burstSize)
case c @ Continue(remaining, t0, t1, n) =>
val now = System.nanoTime()
val duration = (now - t0).nanos.toMillis
val roundTripMillis = (now - t1).nanos.toMillis
maxRoundTripMillis = math.max(maxRoundTripMillis, roundTripMillis)
if (duration >= 500) {
val throughtput = (n * 1000.0 / duration).toInt
println(s"It took $duration ms to deliver $n messages, throughtput $throughtput msg/s, " +
s"latest round-trip $roundTripMillis ms, remaining $remaining of $totalMessages")
}
val nextRemaining = sendBatch(actor, remaining)
if (nextRemaining == 0)
actor ! Done
else if (duration >= 500)
actor ! Continue(nextRemaining, now, now, burstSize)
else
actor ! c.copy(remaining = nextRemaining, burstStartTime = now, n = n + burstSize)
case Done =>
val took = (System.nanoTime - startTime).nanos.toMillis
val throughtput = (totalMessages * 1000.0 / took).toInt
println(s"== It took $took ms to deliver $totalMessages messages, throughtput $throughtput msg/s, " +
s"max round-trip $maxRoundTripMillis ms, burst size $burstSize, " +
s"payload size $payloadSize")
actor ! Shutdown
case Terminated(`actor`) =>
println("Receiver terminated")
}
/**
* @return remaining messages after sending the batch
*/
def sendBatch(actor: ActorRef, remaining: Int): Int = {
val batchSize = math.min(remaining, burstSize)
(1 to batchSize) foreach { x => actor ! payload }
remaining - batchSize
}
}
package test
import java.io.File
import akka.actor.Actor
import akka.actor.ActorSystem
import com.typesafe.config.ConfigFactory
import akka.actor.Props
object Receiver {
def main(args: Array[String]): Unit = {
val file =new File("D:/remotelookup.conf");
System.out.println(file);
val system = ActorSystem("Sys", ConfigFactory.parseFile(file))
system.actorOf(Props[Receiver], "rcv")
}
}
class Receiver extends Actor {
import Sender._
def receive = {
case m: Echo => sender() ! m
case _ =>
}
}
calculator.conf
include "common"
akka {
# LISTEN on tcp port 2552
remote.netty.tcp.port = 2552
}
common.conf
akka {
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
netty.tcp {
hostname = "127.0.0.1"
}
}
}
remotelookup.conf
include "common"
akka {
remote.netty.tcp.port = 2553
}
全部從官網同一個akka版本里的
akka-actor_2.10-2.3.11.jar
akka-remote_2.10-2.3.11.jar
config-1.2.1.jar
netty-3.8.0.Final.jar
protobuf-java-2.5.0.jar
相關推薦
akka 2.3.11 例項
package test import java.io.File import scala.concurrent.duration._ import akka.actor.Actor import akka.actor.ActorIdentity import
JBoss4.2.3 多例項配置
需求:在原有的例項上多開兩個例項。 環境:linux、JBoss4.2.3 實現: 前提---配置$JBOSS_HOME環境變數,當然也可以不用配置,個人習慣而已。 1.同級目錄下複製 default cd $JBOSS_HOME/server/ cp -r defaul
阿裏雲Tengine和Openresty/1.11.2.3 數據對比
image rest bsp 9.png swift val max 文件 -a HLS播放延遲測試:阿裏雲48s ,openresy 31s Cache-Control: max-age=300 NGINX下配置CACHE-CONTROL Content-L
奪命雷公狗TP3.2.3商城11-----後臺頭部和左側導航分離
代碼 使用 phpstudy 效果 ima 導航 header dmi admin 我們來將網站後臺的頭部和左側的導航分離出來: 然後在模版中找到類為:topbar-inner clearfix 的地方: 然後我們在然後在D:\phpStudy\WWW\sho
習題3.11 表達式轉換(25 分)浙大版《數據結構(第2版)》題目集
lang == lan 包括 設計程序 不用 運算 出現 加減 算術表達式有前綴表示法、中綴表示法和後綴表示法等形式。日常使用的算術表達式是采用中綴表示法,即二元運算符位於兩個運算數中間。請設計程序將中綴表達式轉換為後綴表達式。 輸入格式: 輸入在一行中給出不含
11.1 LAMP架構介紹11.2 MySQL_MariaDB介紹11.3-11.5 MySQL安裝
mysql安裝11.1 LAMP架構介紹1. LAMP包含:Linux+Apache(httpd)+MySQl+PHPLinux : 操作系統(centos)Apache:httpd——外部服務軟件MySQl:存儲數據軟件(字符串)PHP : 腳本語言(以作網站為主)2. Apache(httpd) , My
九周第四次課(2月26日) 11.1 LAMP架構介紹 11.2 MySQL、MariaDB介紹 11.3/11.4/11.5 MySQL安裝 擴展 mysql5.5源碼編譯安裝
when image safe x86 lease x86_64 roc use my.cnf 11.1 LAMP架構介紹11.2 MySQL、MariaDB介紹11.3/11.4/11.5 MySQL安裝擴展mysql5.5源碼編譯安裝 http://www.amin
11.1 LAMP架構介紹 11.2 MySQL、MariaDB介紹 11.3/11.4/11.5
11.1 LAMP架構介紹 11.2 M11.1 LAMP架構介紹即 Linux Apache MySql PHP的簡寫,即把 Apache MySql PHP安裝在Linux系統上,組成一個環境來運行php語言Apache(httpd)和 PHP是一個整體 (PHP是以一個模塊的形式和Apache
gitlab 11.2.3 通過LDAP 調用FreeIPA 登錄
修改 sam ast simple allow fir filter 11.2 lower FreeIPA 和 Gitlab 的搭建,可以參考我之前的博客。 FreeIPA域名 server.zhuxu.co(內部測試,修改一下gitlab的host文件 ip Fr
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,
public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> l1= new ArrayList<>(); &
線性表的合併已知兩個集合A和B,現要求一個新的集合A=A∪B。例如,設A=(7,5,3,11),B=(2,6,3),合併後A=(7,5,3,11,2,6)。
#include<iostream> using namespace std; #define MAXSIZE 100 #define OK 1 #define ERROR -1 #define OVERFLOW -2 #define MAXSIZE 100 &n
【跟我學oracle18c】第十八天:Multitenant Architecture:2.3 Application root,pdb,Container Maps專項測試(對應例項實踐)
對映表指定元資料鏈接的公共表中的一列,並使用分割槽將不同的應用程式PDBs與不同的列值關聯起來。通過這
基於硬體的C(C++)語言程式設計教程11:求解1+2+3+...+100之和
本系列文章希望探討以硬體為平臺講述C(C++)知識的一個新的途徑,改變目前大多數C語言教程僅注重C語言本身的語法規則,而脫離其應用環境的現狀。希望讀者通過本教程的學習,能夠立刻學以致用,真正將所學知識應用到專案實踐中。 開發環境:Atmel Studio 7.0 硬體平臺:Microch
idea 2018.2.3 for mac破解啟用方法 --至2100年 9月11號親測
1.官網下載idea: https://www.jetbrains.com/idea/download/ 2.下載破解jar包(crack): 也可以去:http://idea.lanyus.com/ 下載最新破解jar包 3.修改hosts: 在hos
Ant Design 3.11.2 釋出,阿里開源的企業級 UI 設計語言
Ant Design 3.11.2 釋出了,Ant Design 是阿里開源的一套企業級的 UI 設計語言和 React 實現,使用 TypeScript 構建,提供完整的型別定義檔案,自帶提煉自企業級中後臺產品的互動語言和視覺風格、開箱即用的高質量 React
ACMNO.11 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。 程式設計序找出N之內的所有完數,並按下面格式輸出其因子
寫在前面,心得感悟~ 程式碼越來越有難度! 這個ACM題,我除錯了 將近50次~ 一個小時! 真的是,年紀輕輕的搞什麼ACM呀! 關於題的解決思路放在下面再寫吧! 題目描述 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+
thinkphp3.2.3版本的資料庫增刪改查例項
框架thinkphp 版本:3.2.3 內容:資料庫操作 1.多表查詢一條資料 M('a表')->join("b表 on b表.id=a表.id")->where('
判斷String字串中是否有連續的數字,有連續的就縮寫(比如:String str="1,2,3,7,10,11,12,13,14,15" 變為"1-3,7-7,10-15")
string newList=""; string str="1,2,3,7,10,11,12,13,14,15";//string字串 int min; int max; if (str!=null&&str
為列表b_list = [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 8, 10, 11]去重複
方法一、 遍歷去重複:建立一個新的列表a,然後讓新的列表裡的元素和目標列表b的元素作對比,如果a中沒有b中的元素則在a列表後追加,否則對a不做處理即可,最後輸出a b_list = [1, 2, 3, 4, 5, 6, 6, 7, 8, 8, 8, 10, 11] d_list=[] for i