Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
meibuyu-micro
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
without authentication
meibuyu-micro
Commits
3f929f96
Commit
3f929f96
authored
Mar 06, 2023
by
carlos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
服务注册修改
parent
88d40318
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
2 deletions
+57
-2
RegisterServiceListener.php
src/Listener/RegisterServiceListener.php
+57
-2
No files found.
src/Listener/RegisterServiceListener.php
View file @
3f929f96
...
...
@@ -8,6 +8,7 @@
namespace
Meibuyu\Micro\Listener
;
use
Hyperf\Consul\Exception\ServerException
;
use
Hyperf\ServiceGovernance\Listener\RegisterServiceListener
as
BaseRegisterServiceListener
;
class
RegisterServiceListener
extends
BaseRegisterServiceListener
...
...
@@ -30,7 +31,7 @@ class RegisterServiceListener extends BaseRegisterServiceListener
*/
$host
=
isset
(
$server
[
'local_ip'
])
?
$server
[
'local_ip'
]
:
$server
[
'host'
];
if
(
in_array
(
$host
,
[
'0.0.0.0'
,
'localhost'
]))
{
$host
=
$this
->
getInternalIp
();
$host
=
$this
->
get
Real
InternalIp
();
}
if
(
!
filter_var
(
$host
,
FILTER_VALIDATE_IP
))
{
throw
new
\InvalidArgumentException
(
sprintf
(
'Invalid host %s'
,
$host
));
...
...
@@ -45,4 +46,58 @@ class RegisterServiceListener extends BaseRegisterServiceListener
return
$result
;
}
protected
function
getRealInternalIp
()
{
if
(
method_exists
(
self
::
class
,
'getInternalIp'
))
{
return
$this
->
getInternalIp
();
}
$ips
=
swoole_get_local_ip
();
if
(
is_array
(
$ips
)
&&
!
empty
(
$ips
))
{
return
current
(
$ips
);
}
/** @var mixed|string $ip */
$ip
=
gethostbyname
(
gethostname
());
if
(
is_string
(
$ip
))
{
return
$ip
;
}
throw
new
\RuntimeException
(
'Can not get the internal IP.'
);
}
public
function
process
(
object
$event
)
{
$this
->
registeredServices
=
[];
$continue
=
true
;
$env
=
$this
->
config
->
get
(
'app_env'
);
while
(
$continue
)
{
try
{
$services
=
$this
->
serviceManager
->
all
();
$servers
=
$this
->
getServers
();
foreach
(
$services
as
$serviceName
=>
$serviceProtocols
)
{
foreach
(
$serviceProtocols
as
$paths
)
{
foreach
(
$paths
as
$path
=>
$service
)
{
if
(
!
isset
(
$service
[
'publishTo'
],
$service
[
'server'
])
||
$env
==
'dev-mf'
)
{
continue
;
}
[
$address
,
$port
]
=
$servers
[
$service
[
'server'
]];
switch
(
$service
[
'publishTo'
])
{
case
'consul'
:
$this
->
publishToConsul
(
$address
,
(
int
)
$port
,
$service
,
$serviceName
,
$path
);
break
;
}
}
}
}
$continue
=
false
;
}
catch
(
ServerException
$throwable
)
{
if
(
strpos
(
$throwable
->
getMessage
(),
'Connection failed'
)
!==
false
)
{
$this
->
logger
->
warning
(
'Cannot register service, connection of service center failed, re-register after 10 seconds.'
);
sleep
(
10
);
}
else
{
throw
$throwable
;
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment