我有示例代码生成一个未绑定的源并使用它:
对象Main {
def main(args : Array[String]): Unit = {
implicit val system = ActorSystem("Sys")
import system.dispatcher
implicit val materializer = ActorFlowMaterializer()
val source: Source[String] = Source(() => {
Iterator.continually({ "message:" + ThreadLocalRandom.current().nextInt(10000)})
})
source.runForeach((item:String) => { println(item) })
.onComplete{ _ => system.shutdown() }
}
Run Code Online (Sandbox Code Playgroud)
}
我想创建实现的类:
trait MySources {
def addToSource(item: String)
def getSource() : Source[String]
}
Run Code Online (Sandbox Code Playgroud)
我需要使用多个线程,例如:
class MyThread(mySources: MySources) extends Thread {
override def run(): Unit = {
for(i <- 1 to 1000000) { // here will …
Run Code Online (Sandbox Code Playgroud) 我有使用 liquibase 定义数据库迁移的 Spring Boot 应用程序。当我启动应用程序脚本时,等待 500 秒并检查应用程序的 http 状态。当它返回错误代码时,脚本会终止应用程序进程并尝试再次启动应用程序。应用程序有时会在启动过程中被终止,并且 liquibase 不会从databasechangeloglock
. 当应用程序下次运行时它等待释放锁,但它不会发生并且应用程序一次又一次地被杀死。
在每个应用程序的日志中,最后一行是:
liquibase : Waiting for changelog lock....
liquibase : Waiting for changelog lock....
Run Code Online (Sandbox Code Playgroud)
您对如何在脚本中解决此问题有任何想法吗?
如何传递在Pipeline Job中复制工件的构建号?因为默认此步骤复制来自上一个稳定构建的工件,并且我需要来自特定构建的复制工件(例如123).
我的管道代码在这里:
node {
stage "Copy artifacts"
step ([$class: 'CopyArtifact',
projectName: 'other-project',
filter: 'myapp.jar']);
}
Run Code Online (Sandbox Code Playgroud) 如果我想使用例如apt安装一些东西我可以创建playbook:
- hosts: xxx
roles:
- my-role
Run Code Online (Sandbox Code Playgroud)
并且在角色的tasks/main.yml中:
- name: install something
sudo: yes
apt: "name=something state=installed"
Run Code Online (Sandbox Code Playgroud)
但是,我可以在剧本中添加sudo:
- hosts: xxx
sudo: yes
roles:
- my-role
Run Code Online (Sandbox Code Playgroud)
并从任务中删除它:
- name: install something
apt: "name=something state=installed"
Run Code Online (Sandbox Code Playgroud)
两种解决方案都有效,但哪种解决方案更好?这个解决方案有区别吗?优点?缺点?